Beim Arbeiten mit dem GridView-Steuerelement von ASP.Net habe ich oft festgestellt, dass die folgende Methode ziemlich effektiv ist.
einen Gridview mit der folgenden Definition Gegeben:
<asp:GridView runat="server" ID="grdTest">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label runat="server" ID="lblParam1" Text="1"></asp:Label>
<asp:ImageButton runat="server" ID="ibtnButton1" ImageUrl="test1.jpg" CommandName="firstButton" CommandArgument='<%#DataBinder.Eval(Container, "RowIndex")%>' />
<br />
<asp:Label runat="server" ID="lblParam2" Text="2"></asp:Label>
<asp:ImageButton runat="server" ID="ibtbButton2" ImageUrl="test2.jpg" CommandName="secondButton" CommandArgument='<%#DataBinder.Eval(Container, "RowIndex")%>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Sie dann den RowCommand
Veranstaltung Gridview verwenden kann, um zu bestimmen, welche Schaltfläche geklickt wurde. Beachten Sie die Werte CommandName
und CommandArgument
auf dem ImageButton. Die CommandName
kann verwendet werden, um zu unterscheiden, auf welche Schaltfläche geklickt wurde, und CommandArgument
kann verwendet werden, um zeilenspezifische Informationen zu ermitteln, z. B. einen identifizierenden Wert für die Zeile. Diese Information kann dem CommandArgument' using
DataBinder.Eval` oder ähnlichen Mechanismus hinzugefügt werden.
Anschließend können Sie erfassen die RowCommand
Ereignis und Redirect auf den Befehlsnamen und das Argument, so etwas wie dieses zu Grunde:
Protected Sub grdTest_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grdTest.RowCommand
Dim arg As String = e.CommandArgument
Dim rowIndex As Integer = Nothing
If Integer.TryParse(arg, rowIndex) Then
If e.CommandName = "firstButton" Then
Dim lblParm As Label = grdTest.Rows(rowIndex).FindControl("lblParam1")
If lblParm IsNot Nothing Then
Response.Redirect("Default.aspx?parm=" & lblParm.Text, False)
End If
ElseIf e.CommandName = "secondButton" Then
Dim lblParm As Label = grdTest.Rows(rowIndex).FindControl("lblParam2")
If lblParm IsNot Nothing Then
Response.Redirect("Default2.aspx?parm=" & lblParm.Text, False)
End If
End If
End If
End Sub
EDIT
ich den Beispielcode in der Steuerwerte abgerufen werden geändert Zeile, basierend auf den Fragen in Ihren Kommentaren. Ich habe das Befehlsargument für jede Schaltfläche den Zeilenindex innerhalb der Tabelle erstellt. Dadurch können Sie Steuerelemente innerhalb dieser Zeile innerhalb des 'RowCommand' -Ereignisses mithilfe des Namens des Steuerelements abrufen.
Sie sollten uns Ihren aspx-Code aus der Gridview zeigen. –