在asp.net中动态创建控件ID

时间:2012-01-14 17:04:13

标签: asp.net

我创建一个动态表,当我点击"添加"按钮一行将添加动态创建的四个单元格,第一个单元格包含动态创建的复选框,其余单元格包含动态创建的文本框。  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&#34 ;," ROW6"

即时删除我删除row3,row5,row6,现在当前行是row1,row2,row4。 然后我添加另一行,现在我得到错误"新行无法添加,因为行vth id row4已经存在",请帮助我。

2 个答案:

答案 0 :(得分:0)

每次删除行时,您都可以重新识别所有行/单元格。

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

答案 1 :(得分:0)

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

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

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

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

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

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

相关问题