我正在尝试制作一个将未定义的行数加载到表中的页面,每行包含两列,一列是字符串,另一列是文本框。当我单击提交按钮时,我希望能够检索输入到每个 TextBox 中的值。
前半部分我可以做到,显然在实际代码中,这将在 foreach 循环中,并且文本框 ID 分配了一个唯一值,我可以稍后重现以调用它。
TableCell myCell = new TableCell();
myCell.Text = "StudentID";
TableCell nextCell = new TableCell();
TextBox mytext = new TextBox();
mytext.ID = "TxtBox1";
nextCell.Controls.Add(mytext);
TableRow myRow = new TableRow();
myRow.Cells.Add(myCell);
myRow.Cells.Add(nextCell);
TableStuUploads.Rows.Add(myRow);
当我单击提交按钮时,我尝试运行此代码(只是临时代码 ATM,概念证明):
TextBox tmptext = (TextBox)FindControl("TxtBox1");
Label1.Text = tmptext.Text;
但这将 tmptext 设置为 null,并且我在下一行得到一个空指针异常。所以然后我尝试了
TextBox tmptext = (TextBox)TableStuUploads.FindControl("TxtBox1");
Label1.Text = tmptext.Text;
同样的错误。然后我尝试了
foreach (Control x in TableStuUploads.Controls)
{
if (x.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox"))
{
Label1.Text = ((TextBox)x).Text;
}
}
但是在调试时,我看到 TableStuUploads.Controls 的计数为零。
我应该如何处理这些动态创建的控件?我四处搜索,得到的答案引导我找到我已经尝试过的三个解决方案。我哪里错了?