【问题标题】:Same ID error while adding dynamic controls to table in ASP .NET在 ASP .NET 中向表中添加动态控件时出现相同的 ID 错误
【发布时间】:2014-08-13 07:57:26
【问题描述】:

我通过让用户输入所需的行数,将控件动态添加到 ASP .NET 中的表中。 addRow()函数的示例代码为:

HtmlTableCell cell_1 = new HtmlTableCell();
HtmlTableCell cell_2 = new HtmlTableCell();
l = new Label();
nomenclature = new TextBox();
unit = new TextBox();

row[i] = new HtmlTableRow();

label.Text = "" +(i+ 1);           
cell_1.Controls.Add(l);
row[i].Controls.Add(cell_1);

nomenclature.TextMode = TextBoxMode.MultiLine;
nomenclature.Rows = 5;
nomenclature.Columns = 40;
nomenclature.ID="nomenclature"+i;
nomenclature.Text = "NA";
cell_2.Controls.Add(nomenclature);
row[i].Controls.Add(cell_2);

table_items.Controls.Add(row[i]);

现在成功添加行后,当我刷新页面并再次尝试 添加新行,它给了我相同的 ID 'nomenclature0' 错误。

请帮我解决这个问题,

提前致谢,

【问题讨论】:

  • 你可以在你的问题中添加完整的错误吗?
  • 我在猜测解决方案 - 最初,当 i=0 时,ID 为“Nomenclature0”。请检查您是否没有增加 i 的值,您将拥有相同的 i 值并且 ID 将为 Nomenclature0。
  • @KrunalPatil:完全错误:找到具有相同 ID 'nomenclature0' 的多个控件。 FindControl 要求控件具有唯一 ID

标签: c# html asp.net .net web


【解决方案1】:

我没有足够的关于你的代码的信息。

两种可能的解决方案:

1) 试试这个“table_items.Controls.Clear();”在调用 addRows 函数之前。

2) 如果是回发,则不填表。

【讨论】:

  • 问题:我已成功在行中添加控件,并在数据库中从它们获取数据。现在,当我有相同的页面时,我必须从数据库中动态添加行。它显示了所有带有数据的行,但是当我单击更新选项时,它给出了相同命名法的“对象未实例化”错误。请对此提供帮助。
  • 你选择什么解决方案? 1 或 2?
  • 第一个工作,但是在更新同一个表的数据时,它会抛出错误
  • 如果您将使用字段更新和回发,您应该实施第二个解决方案。确保您的 htmlTable 具有属性 EnableViewstate = true 并确保在回发之间保存单元格和文本框。如果在回发之间未保存某些控件,则必须在 Page_Load 事件中加载。
  • 我在表单上有几个单选按钮,它们通过 javascript 控制多个文本框的启用和禁用。当我单击上面讨论的添加行按钮时会出现问题,由于单选按钮导致的所有更改都将恢复,即如果页面加载上的文本框已启用,尽管单选按钮禁用了它,但它仍然处于启用状态。由于单选按钮和文本框有多种组合,如何解决这个问题??
猜你喜欢
  • 2013-11-04
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多