【问题标题】:dynamically created controls ID's in asp.net在 asp.net 中动态创建的控件 ID
【发布时间】:2012-01-14 17:04:12
【问题描述】:

我正在创建一个动态表,当我单击“添加”按钮时,将添加一行动态创建的四个单元格,第一个单元格包含一个动态创建的复选框,其余单元格包含动态创建的文本框。 分配的id是

    Table Table1 = new Table();
    TableRow row = new TableRow();
    TableCell cell1 = new TableCell();
    TableCell cell2 = new TableCell();
    TableCell cell3 = new TableCell();
    TableCell cell4 = new TableCell();
    CheckBox checkbox = new CheckBox();
    TextBox textbox1 = new TextBox();
    TextBox textbox2 = new TextBox();
    TextBox textbox3 = new TextBox();
    row.ID = "row" + Table1.Rows.Count;
    cell1.ID = "cell1" + Table1.Rows.Count;
    cell2.ID = "cell2" + Table1.Rows.Count;
    cell3.ID = "cell3" + Table1.Rows.Count;
    cell4.ID = "cell4" + Table1.Rows.Count;
    checkbox.ID = "ck1" + Table1.Rows.Count;
    textbox1.ID = "tb1" + Table1.Rows.Count;
    textbox2.ID = "tb2" + Table1.Rows.Count;
    textbox3.ID = "tb3" + Table1.Rows.Count;

我还有另一个删除按钮, 当我选择行的任何复选框并单击删除按钮时,特定选定的行被删除并且表数也减少了,但是当我再次单击添加按钮时,我得到一个错误,例如无法创建行,因为已经存在一行使用该 ID,请在此问题上帮助我

示例: 我创建了 6 行 vth id:"row1","row2","row3","row4","row5","row6"

我正在删除我正在删除第 3 行、第 5 行、第 6 行,现在当前的行是第 1 行、第 2 行、第 4 行。 然后我添加另一行,现在我收到错误,因为“无法添加新行,因为行 vth id row4 已经存在”,请帮助我。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您可以在每次删除一行时重新标识所有行/单元格。

    或者您可以使用一个计数器,例如 MaxRow,您将存储在会话状态中,新行将使用它而不是 Rows.Count。

    【讨论】:

      【解决方案2】:

      如果您不将行添加到表中(至少在您的代码中没有显示),table1.rows.count 将不会为要添加的下一行而增加。所以这可能就是您收到错误消息的原因。

      不过,我认为问问自己为什么觉得需要以这种方式为每个元素分配 ID 可能更重要。我认为使用集合索引器和FindControl() 来查找要使用的元素会更易于管理。如果您使用此方法,每个元素在其容器中可能具有相同的服务器端 ID。

      这样,您可以使用int 索引器以数学方式遍历表格,而不必增加基于字符串的 ID。

      例如(可能在 for 循环中):

      (TextBox)WorkingControl = Table1.Rows(i).Cells(j).FindControl("tb1"); WorkingControl.Text = 'Hello';

      请原谅我的 C#,它有点粗糙。希望你能明白。

      【讨论】:

        猜你喜欢
        • 2017-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-18
        • 2010-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多