<asp:Table id="tabMenu" runat="server"><asp:TableRow id="row1"><asp:TableCell id="cell1"></asp:TableCell></asp:TableRow></asp:Table>为服务器控件加上id然后for(int i=0;i<10;i++)
{
  CheckBox cb = new CheckBox();
  cb.ID = i.ToString();  //只是举例子,ID是动态生成的,并且未知
  cb.Text = i.ToString();
  //tabMenu.Rows[0].Cells[0].Controls.Add(cb);
  this.cell1.Controls.Add(cb);
}

解决方案 »

  1.   

    你的创建子控件的程序的位置不对,必须放在控件呈现的事件中,或访问tabMenu.Rows[0].Cells[0].Controls.Count 的程序前,特别注意submit后该子对象也必须先创建后使用,
    不要以为提交前创建了,提交后可以直接使用。这是许多使用ASP。NET朋友容易翻的错误
      

  2.   

    for(int i=0;i<10;i++)
    {
      CheckBox cb = new CheckBox();
      cb.ID = i.ToString();  //只是举例子,ID是动态生成的,并且未知
      cb.Text = i.ToString();
      tabMenu.Rows[0].Cells[0].Controls.Add(cb);
    }这段代码要放到Page_Load中的每次postback都能执行到的地方就行了
      

  3.   

    aspx中: 
    <asp:table id="Table1" runat="server" Width="580" BorderColor="LightSteelBlue" BorderWidth="2px" HorizontalAlign="Center" border="1" borderColorLight="#e7e7e7" align="center" cellPadding="0" borderColorDark="#1871a6" cols="1" cellSpacing="0">
    <asp:TableRow VerticalAlign="Middle" BorderColor="Transparent" HorizontalAlign="Center" ForeColor="Transparent" BackColor="LightSteelBlue"></asp:TableRow></asp:table>aspx.cs中:(serviceTypeNum是我程序里的整形一个变量)
    CheckBox[] cbServType = new CheckBox[serviceTypeNum];

    for (int k = 0 ; k < serviceTypeNum ; k++)
    {
    cbServType[k] = new CheckBox();
    cbServType[k].ID = "CheckBox1" + k;
    cbServType[k].AutoPostBack = false;
    cbServType[k].Text = k.ToString();
    }for (int k = 0 ; k < serviceTypeNum ; k++)
    {
             Table1.Rows[0].Cells[4].Controls.Add(cbServType[k]);
    }访问的代码如下:
    for (int k = 0 ; k < serviceTypeNum ; k++)
    {
              if(((CheckBox)Table1.Rows[0].Cells[4].Controls[k]).Checked) 
              { ... }}