Linkbutton klicken Sie in einem asp:GridView Zelle nicht auslösen OnRowCommand Veranstaltung
UI-Feature: ich habe eine GridView
mit wenigen Spalten. Wichtigste Spalte ist PcCode, das zeigt eine string
Wert für jede Zeile.
Erwartet: Wenn ich auf eine Zelle von einer Zeile, die PcCode Spalte eine andere GridView
angezeigt werden soll. Allerdings, wenn ich versuche, mit einem asp:LinkButton
für eine Zelle, die Dinge funktionieren einfach nicht. RowCommand
nicht ausgelöst wenn ich auf eine asp:LinkButton
im GridView
Zelle. Wo mache ich etwas falsch? Die Art und Weise der erwarteten Funktionalität erreicht werden kann? Vielen Dank im Voraus für die Unterstützung eines Neulings.
In der folgende code, den ich versucht hatte zu bekommen RowIndex
und führen Sie es durch die CommandArgument
und verwenden Sie eine CommandName
.
.aspx-code
<asp:GridView ID="_UIProfitcenterTotalGridView" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" PageSize="22" ShowFooter="True" AutoGenerateColumns="False"
DataKeyNames="ProfitcenterCode" EnableViewState="False"
OnRowDataBound="_UIProfitcenterTotalGridView_RowDataBound"
OnPageIndexChanging="_UIProfitcenterTotalGridView_PageIndexChanging"
OnRowCommand="_UIProfitcenterTotalGridView_OnRowCommand">
<Columns>
<asp:TemplateField HeaderText="PcCode" InsertVisible="False"
ShowHeader="False" SortExpression="ProfitcenterCode" FooterText="Total" FooterStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:LinkButton ID="_UIPCCodeLinkButton" runat="server" Text='<%# Eval("ProfitcenterCode") %>'
CommandName="Select"
CommandArgument='<%# ((GridViewRow) Container).RowIndex %>'>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
...
code für die aspx.cs
protected void _UIProfitcenterTotalGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Select")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = _UIProfitcenterTotalGridView.Rows[index];
string ProfitcenterCode = _UIProfitcenterTotalGridView.DataKeys[_UIProfitcenterTotalGridView.SelectedIndex].Values["ProfitcenterCode"].ToString();
}
}
Nachdem die Zeile ausgewählt, die ich brauchen, um die ausgewählte Zeile, die den Wert als string und vergleichen Sie mit einem Listenelement ein neues GridView.
Versucht
-
Mit Link_Button_Click(Object sender, EventArgs e) und die folgenden aber nicht.
protected void _UIProfitcenterTotalGridView_Rowcommand(object sender, GridViewCommandEventArgs e)
{
if (- e.CommandName == "Select")
{string ProfitcenterCode = ((GridViewRow)(((LinkButton)e.CommandSource).NamingContainer)).Zellen[2].Text;
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich versucht zu verwenden
LinkButton_Click()
Veranstaltung stattRowCommand
als jason vorgeschlagen:Jedoch hatte ich immer noch das problem, das ich herausgefunden. Das problem war die
LinkButton
war nicht die Bindung an die Zeilen thefore, könnte es nicht passieren, irgendwelchen Wert auf Auswahl. Was fehlte, war der folgende code:Können Sie das sender-Objekt ( link, button, ruft der Veranstaltung) und erhalten die übergeordnete Zeile aus dem gridview. Beispiel:
War es schwer zu Folgen, was genau Sie suchen, also, wenn ich etwas verpasst, lass es mich wissen und ich werde es hinzufügen.
Und ändern Sie Ihre linkbutton: