이전 연구 에세이에서는 DataKeyNames 및 DataKeys를 사용하여 GridView 기본 키 열에 대한 데이터 액세스를 수행할 수 있었습니다. 후속 실험에서는 TemplateField를 사용하여
<asp:TemplateField Visible="False">를
수행할 수 있음을 발견했습니다.
<항목 템플릿>
<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.NET
코드는 다음과 같습니다.
" 헤더텍스트="ID"/>
<asp:템플릿 필드>
<헤더템플릿>
이름
</HeaderTemplate>
<항목 템플릿>
<asp:LinkButton id="lbName" runat="서버" CommandName="선택">
<%#Eval("이름")%>
</asp:링크버튼>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="상태" HeaderText="상태"/>
동시에 GridView에 두 개의 이벤트 처리기(RowCreated 및 RowCommand)를 추가해야 합니다.
//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());
}
이렇게 하면 선택란을 이용할 필요 없이 이름 클릭과 동시에 선택할 수 있습니다.