使用c#在asp.net中动态添加复选框?
我正在尝试在我的使用c#在asp.net中动态添加复选框?,c#,asp.net,dynamic-controls,C#,Asp.net,Dynamic Controls,我正在尝试在我的asp.net项目中添加两组复选框。我正在做这件事: 页面加载时: public static CheckBox[] chck = new CheckBox[100]; public static CheckBox[] chckbx = new CheckBox[100]; 我有一个功能: public void generatecheckbox1() { for (int i = 0; i < 99; i++) { chck
asp.net
项目中添加两组复选框。我正在做这件事:
页面加载时:
public static CheckBox[] chck = new CheckBox[100];
public static CheckBox[] chckbx = new CheckBox[100];
我有一个功能:
public void generatecheckbox1()
{
for (int i = 0; i < 99; i++)
{
chck[i] = new CheckBox();
chck[i].ID = chck + Convert.ToString(i);
chck[i].Text = chck + Convert.ToString(i);
pnlcom1.Controls.Add(chck[i]);
pnlcom1.Controls.Add(new LiteralControl("<br />"));
chckbx[i] = new CheckBox();
chckbx[i].ID = chckbx + Convert.ToString(i);
chckbx[i].Text = chckbx + Convert.ToString(i);
pnlcom2.Controls.Add(chckbx[i]);
pnlcom2.Controls.Add(new LiteralControl("<br />"));
}
}
问题是我得到的错误页面如下:
它是这样说的:
找到了具有相同ID的多个控件“System.Web.UI.WebControls.CheckBox[]0”。FindControl要求控件具有唯一的ID。
但是我正在分配不同的id..
我该怎么办?问题是,您正在使用相同id在一个循环迭代中创建两个复选框。当它们位于相同的NamingContainer
中时,ASP.NET不允许这样做(不实现)
因此将其更改为(注意string.Format
部分):
这似乎有效,因为Type
+string
=类型名称+字符串,但看起来像:
"System.Windows.Forms.CheckBox[]99"
所以只需使用上面的代码
string.Format("chk_1_{0}", i);
问题在于,您正在使用相同的id在一个循环迭代中创建两个复选框。这在ASP.NET中是不允许的,因为它们位于相同的NamingContainer
(未实现)
因此将其更改为(注意string.Format
部分):
这似乎有效,因为Type
+string
=类型名称+字符串,但看起来像:
"System.Windows.Forms.CheckBox[]99"
所以只需使用上面的代码
string.Format("chk_1_{0}", i);
不要在这里chckchck[i].ID=chck+Convert.ToString(i)代码>需要修改
chck[i].ID=“chck”+Convert.ToString(i)代码>不要在此处更改chck[i].ID=chck+Convert.ToString(i)代码>需要修改
chck[i].ID=“chck”+Convert.ToString(i)
您是否只在回发时调用了generatecheckbox1
一次或多次?我只调用了一次,而不是在这里调用chck[i]。ID=chck+Convert.ToString(i)
需要是chck[i].ID=“chck”+Convert.ToString(i)代码>@legendinmaking有效。。。谢谢你写下这封信作为我的答案,然后我就可以接受了。。。谢谢你在回邮时只打了一次或多次电话给generatecheckbox1吗?我只打了一次,不是在这里打电话给chck[i]。ID=chck+Convert.ToString(i)
需要是chck[i].ID=“chck”+Convert.ToString(i)代码>@legendinmaking有效。。。谢谢你写下这封信作为我的答案,然后我就可以接受了。。。谢谢
string.Format("chk_1_{0}", i);