WebDataGridのTemplateDataField内の文字列をコードビハインドで取得するには、TemplateDataFieldのセルに対して、ASP.NET WebForms標準のFindControlメソッドを使います。
<%-- ASPX側 --%>
<asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button1_Click" />
<ig:WebDataGrid ID="WebDataGrid1" runat="server" ...>
<Columns>
<ig:BoundDataField DataFieldName="ID" Key="ID" ...></ig:BoundDataField>
<ig:TemplateDataField Key="Name">
<ItemTemplate>
<asp:Label ID="FamilyNameLabel" runat="server" Text='<%# Bind("FamilyName") %>'></asp:Label>
<asp:Label ID="GivenNameLabel" runat="server" Text='<%# Bind("GivenName") %>'></asp:Label>
</ItemTemplate>
<Header Text="Name">
</Header>
</ig:TemplateDataField>
<ig:BoundDataField DataFieldName="Age" Key="Age" ...></ig:BoundDataField>
</Columns>
</ig:WebDataGrid>
// ASPX.cs側
protected void Button1_Click(object sender, EventArgs e)
{
// 0行目のName欄のテキストを取得する。
String familyName = (WebDataGrid1.Rows[0].Items[1].FindControl("FamilyNameLabel") as Label)?.Text;
String givenName = (WebDataGrid1.Rows[0].Items[1].FindControl("GivenNameLabel") as Label)?.Text;
System.Diagnostics.Debug.WriteLine("FamilyName=" + familyName + ", GivenName=" + givenName);
}
サンプル
参考情報(ASP.NET WebForms開発元のマイクロソフトのサイトより)
- ItemTemplateの使い方
- FindControl