在gridview内的templateField中返回null文本框文本

时间:2013-07-08 07:33:13

标签: asp.net gridview

无法访问TemplateField中的文本框文本

的.aspx:

<asp:TemplateField HeaderText="PIN" AccessibleHeaderText="PIN">
<ItemTemplate>
    <asp:TextBox ID="txtPin" runat="server" Width="50px" MaxLength="4"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
代码背后的代码:

foreach (GridViewRow gr in grdPin.Rows)
        {
            TextBox lblDate = (TextBox)gr.Cells[0].FindControl("txtPin");
            string x = lblDate.Text;
        }

变量x为空。

2 个答案:

答案 0 :(得分:3)

使用TemplateFields,您必须使用FindControl上的GridViewRow而不是小区:

TextBox txtPin= (TextBox)gr.FindControl("txtPin");

您必须在要查找的控件的NamingContainer上使用FindControl。如果控件位于GridViewRow,那么就是NamingContainer

答案 1 :(得分:0)

您需要使用 RowDataBound 事件

if(e.Row.RowType == DataControlRowType.DataRow)
    {
  // find and edit your control here
 // example 
  Label date = (Label)e.Row.FindControl("ControlID");
    }