0

checkboxes我正在尝试在我的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 />"));
    }
}

我在这里调用这个函数:

protected void ddluserwebser_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ddluserwebser.SelectedItem.Text == "Custom")
    {
        generatecheckbox1();

    }
}

问题是我收到这样的错误页面:

在此处输入图像描述

它是这么说的:

Multiple controls with the same ID 'System.Web.UI.WebControls.CheckBox[]0' were found. FindControl requires that controls have unique IDs.

但是我分配了不同ids..的我应该怎么做?

4

2 回答 2

3

问题是您在一个循环迭代中创建了两个具有相同 ID 的复选框。当它们相同NamingContainerPanel不实现INamingContainer)时,在 ASP.NET 中是不允许的。

所以将其更改为(注意string.Format部分):

for (int i = 0; i < 99; i++)
{
    chck[i] = new CheckBox();
    chck[i].ID = string.Format("chk_1_{0}", i);
    chck[i].Text = chck + Convert.ToString(i);
    pnlcom1.Controls.Add(chck[i]);
    pnlcom1.Controls.Add(new LiteralControl("<br />"));

    chckbx[i] = new CheckBox();
    chck[i].ID = string.Format("chk_2_{0}", i);
    chckbx[i].Text = chckbx + Convert.ToString(i);
    pnlcom2.Controls.Add(chckbx[i]);
    pnlcom2.Controls.Add(new LiteralControl("<br />"));
}

您还使用CheckBox[]来构建您的 ID

chckbx + Convert.ToString(i);

这似乎是因为Type+ string= 类型的名称 + 字符串,但看起来像:

"System.Windows.Forms.CheckBox[]99"

所以只需使用上面的代码

string.Format("chk_1_{0}", i);
于 2013-01-11T11:49:12.363 回答
0

不要检查这里chck[i].ID = chck + Convert.ToString(i);需要 chck[i].ID = "chck" + Convert.ToString(i);

于 2013-01-11T11:59:34.233 回答