2013-01-11 29 views
0

我想在我的asp.net項目中添加兩套checkboxes。還有我這樣做:使用c#在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(); 

    } 
} 

的問題是我收到這樣的錯誤頁面:

enter image description here

它說這句話的:

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

但我分配不同ids..我應該怎麼辦?

+0

你叫'generatecheckbox1'只有一次或多次,也許在回發? –

+0

我只打電話給它一次 –

+1

不要** chck **這裏'chck [i] .ID = chck + Convert.ToString(i);' 需要'chck [i] .ID =「chck」 + Convert.ToString(i);' –

回答

0

不CHCK這裏chck[i].ID = chck + Convert.ToString(i);需要的代碼是 chck[i].ID = "chck" + Convert.ToString(i);

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