前回の研究エッセイでは、DataKeyNames と DataKeys を使用して GridView の主キー列にデータ アクセスを実行できます。その後の実験では、TemplateField を使用して他のデータ アクセスを実現できることがわかりました
。
<アイテムテンプレート>
<asp:Literal id="litUserName" runat="Server" Text='<%#Eval("UserName")%>'/>
</ItemTemplate>
</asp:TemplateField>
//バックエンド実装
String userName = ((Literal)GridView1.SelectedRow.FindControl("litUserName")).Text;
GridView の AutoGenerateSelectButton プロパティは、テーブルの選択を直接有効にすることができます。選択用の追加の列を追加したくない場合は、TemplateField を使用して GridView の選択を実装できます。
asp
:BoundField DataField="ObjectID" " ヘッダーテキスト="ID"/>
<asp:テンプレートフィールド>
<ヘッダーテンプレート>
名前
</HeaderTemplate>
<アイテムテンプレート>
<asp:LinkButton id="lbName" runat="サーバー" CommandName="選択">
<%#Eval("名前")%>
</asp:リンクボタン>
</ItemTemplate>
</asp:テンプレートフィールド>
<asp:BoundField DataField="ステータス" HeaderText="ステータス"/>
同時に、RowCreated と RowCommand という 2 つのイベント ハンドラーを GridView に追加する必要があります。
//RowCreated イベント処理
void GridView1_RowCreated(オブジェクト送信者、GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{ ((LinkButton)e.Row.FindControl("lbName")).CommandArgument = e.Row.RowIndex.ToString();
}
}
//RowCommand イベント処理
void GridView1_RowCommand(オブジェクト ソース、System.Web.UI.WebControls.GridViewCommandEventArgs e)
{
GridView1.SelectedIndex = int.Parse(e.CommandArgument.ToString());
この
ようにすると、選択列を使用せずに、名前をクリックすると同時に選択できます。