c# - 在代码隐藏中创建表行

标签 c# asp.net

因为我是 C# 的新手,所以有人可以帮助我了解这里需要做什么。

我有一个带有两个按钮和几个文本框的表单。

首先,用户在其中一个文本框中输入一个数字,然后按下其中一个按钮。这种形式也有一个空的:

<asp:Table id="tblInputs" runat="server" Border="1" Width="100%">
</asp:Table>

因此,当用户点击第一个按钮时,后面的代码将向该表中添加与文本框中的输入一样多的行,如下所示:

for (int i = 0; i < numOfInputFields; i++) 
{
    TableRow row = new TableRow ();
    TableCell cell_inputA = new TableCell ();
    TableCell cell_inputB = new TableCell ();

    TextBox txtBox_input = new TextBox ();

    txtBox_input.ID = "txtInFld" + (i + 1);
    txtBox_input.Text = txtBox_input.ID;
    cell_inputA.Text = "Input " + (i + 1);
    cell_inputB.Controls.Add (txtBox_input);

    row.Cells.Add (cell_inputA);
    row.Cells.Add (cell_inputB);

    tblInputs.Rows.Add (row);
}

到目前为止,这工作正常,列和行都创建得很好。

我现在的问题是,由于文本框的 ID 是在上面的代码隐藏中创建的,我如何从其他代码隐藏函数访问它们。

在帖子的顶部,我提到我有另一个相同形式的按钮,它只是更改一个新创建的文本框中文本的值,但它不起作用。

常规的表达方式 txtInFld1.Text = "something";不再工作,因为它看不到 txtInFld1,即使它已经在上面创建。我收到“名称‘txtInFld1’在当前上下文中不存在”。我怀疑这与重新提交相同的表格有关,但我不确定。

谁能解释一下这里发生了什么,以及我如何访问在代码隐藏中创建的新文本框的属性?

谢谢

最佳答案

动态创建的控件一开始有点难理解。

1) 您需要将 id 保存在 ViewState 中以在回发后持久化数据。

2) 然后在回发页面时重新创建这些文本框。否则,您将无法访问它。

这是类似的答案(该问题使用 UserControl 而不是 TextBox)-

https://stackoverflow.com/a/14449305/296861

关于c# - 在代码隐藏中创建表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14985812/

相关文章:

c# - 比较两个列表并返回共同条目

c# - 使用 Reactive Extensions (Rx) 进行延迟和重复数据删除

c# - 在 select 语句中重用匿名变量

asp.net - 更改 session 变量中的 SessionID 数据后会丢失

c# - ASP.NET Core MVC 主项目无法在单独的程序集中访问 Controller

javascript - 在 C# 中上传时在图像上添加日期

c# - 如何在WPF应用程序中正确使用图像资源

c# - 实体状态错误

c# - WebApiRequestLifestyle 和 BackgroundJob 混淆

asp.net - 在调用 "WebSecurity.InitializeDatabaseConnection"类的任何其他方法之前,必须先调用 "WebSecurity"方法