我正在尝试创建与网格视图中的行数相等的文本框(来自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在当前上下文中不存在
我在这里做错了什么?
答案 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");
}
}