Im vorherigen Studienaufsatz können wir DataKeyNames und DataKeys verwenden, um den Datenzugriff auf die GridView-Primärschlüsselspalte durchzuführen. In nachfolgenden Experimenten habe ich festgestellt, dass wir TemplateField verwenden können, um einen anderen Datenzugriff zu
erreichen
<ItemTemplate>
<asp:Literal id="litUserName" runat="Server" Text='<%#Eval("UserName")%>'/>
</ItemTemplate>
</asp:TemplateField>
//Backend-Implementierung
String userName = ((Literal)GridView1.SelectedRow.FindControl("litUserName")).Text;
Die AutoGenerateSelectButton-Eigenschaft von GridView kann die Tabellenauswahl direkt aktivieren. Wenn wir keine zusätzliche Spalte zur Auswahl hinzufügen möchten, können wir TemplateField verwenden, um die GridView-Auswahl zu implementieren.
Der ASP.NET-Code lautet wie folgt:
<asp:BoundField DataField="ObjectID " HeaderText="ID"/>
<asp:TemplateField>
<HeaderTemplate>
Name
</HeaderTemplate>
<ItemTemplate>
<asp:LinkButton id="lbName" runat="Server" CommandName="Select">
<%#Eval("Name")%>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Status" HeaderText="Status"/>
Gleichzeitig müssen wir GridView zwei Ereignishandler hinzufügen: RowCreated und RowCommand.
//RowCreated-Ereignisbehandlung
void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{ ((LinkButton)e.Row.FindControl("lbName")).CommandArgument = e.Row.RowIndex.ToString();
}
}
//RowCommand-Ereignisbehandlung
void GridView1_RowCommand(object source, System.Web.UI.WebControls.GridViewCommandEventArgs e)
{
GridView1.SelectedIndex = int.Parse(e.CommandArgument.ToString());
}
Auf diese Weise können Sie beim Klicken auf den Namen gleichzeitig auswählen, ohne die Auswahlspalte verwenden zu müssen.