itemTemplate项ID不存在于代码后面

时间:2015-03-28 14:57:41

标签: asp.net gridview itemtemplate

我正在尝试创建与网格视图中的行数相等的文本框(来自db的数据绑定)。这是我的标记

<asp:GridView ID="quizGrid" runat="server" CssClass="Grid" AutoGenerateColumns="false">
            <Columns>
                 <asp:BoundField DataField="admissionNO" HeaderText="Admission NO"/>
                 <asp:BoundField DataField="studentName" HeaderText="Name" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Textbox runat="server" ID="marks" > </asp:Textbox>
                        </ItemTemplate>
                    </asp:TemplateField>
            </Columns>

但当我在其后面的代码中使用标记时说

  

quizGrid_marks_0在当前上下文中不存在

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您无法在代码隐藏文件中访问您的文本框,而是需要在RowDataBound事件中找到它们,如下所示: -

protected void quizGrid_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if(e.Row.RowType == DataControlRowType.DataRow)
            {
                TextBox marks = (TextBox)e.Row.FindControl("marks");
                txtMarks.Text = "Test";
            }
        }

修改

好的,假设您有一个按钮btnGetData,按钮点击事件为btnGetData_Click,那么您可以通过循环遍历gridview行找到文本框文本: -

protected void btnGetData_Click(object sender, EventArgs e)
{
    GridView quizGrid = (GridView)Page.FindControl("quizGrid");
    foreach (GridViewRow row in quizGrid.Rows) 
    {
        TextBox marks = (TextBox)row.FindControl("marks");
    }
}