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