Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用c#在asp.net中动态添加复选框?_C#_Asp.net_Dynamic Controls - Fatal编程技术网

使用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);

不要在这里chck
chck[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);