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# - 尝试在 RichTextBox 中调整图像大小时光标闪烁

c# - 从 OutOfMemoryException 中恢复

c# - 获取访问您网站的每个用户的 IP 地址和位置

c# - .NET 4 中的 URL 重写?

c# - 以文化中立的方式将字符串拆分为单词

c# - 派生类中的 AssemblyInitialize

c# - Swagger - 隐藏 api 版本参数

c# - Global.asax 中的自动事件连接

javascript - AngularJS-如何格式化包含一系列数字的字符串以在 HTML 表格上显示为列表?

c# - 在 lambda Where() 中全选