自定义服务器控件与asp.net中的复选框数组并不主要复选框状态

问题描述:

我创建了一个呈现复选框列表的服务器控件。 问题是,当我检查一些复选框和回发表单时,所有复选框都未被选中。 这里是我的服务器控制类:自定义服务器控件与asp.net中的复选框数组并不主要复选框状态

public class WeekControl : WebControl 
{ 
    public bool ShowCheckBoxs { get; set; } 

    public WeekControl() 
    { 
     ShowCheckBoxs = true; 
     Table = new Table(); 
     Table.ID = "table1"; 
     CheckBoxes = new CheckBox[7, 4]; 
     Table.CssClass = "weekly"; 
    } 

    protected override void OnInit(EventArgs e) 
    { 
     for (int i = 0; i < 6; i++) 
     { 
      TableRow tr = new TableRow(); 
      Table.Rows.Add(tr); 
      for (int j = 0; j < 4; j++) 
      { 
       TableCell tc = new TableCell(); 
       tr.Cells.Add(tc); 
       if (ShowCheckBoxs) 
       { 
        CheckBoxes[i, j] = new CheckBox(); 
        CheckBoxes[i, j].ID = "ch" + i.ToString() + j.ToString(); 
        tc.Controls.Add(CheckBoxes[i, j]); 
       } 
      } 
     } 
    } 

    public CheckBox[,] CheckBoxes; 
    public Table Table; 
    protected override void CreateChildControls() 
    { 

     Controls.Add(Table); 
     ChildControlsCreated = true; 
     base.CreateChildControls(); 
    } 


} 

任何想法?

或许CreateChildControls出现在反序列化视图状态的步骤之后。您是否试过将Controls.Add(Table)移动到OnInit

您可能会发现MSDN article on ASP.NET page life cycle有趣的阅读。它仅在注释部分提到了CreateChildControls。

CreateChildControls documentation page的注意事项不要超越该方法。如果它可以帮助你,买Roy Soliver啤酒:)

+0

嗨Andomar。移动Controls.Add(表)到OnInit工作。 – 2011-05-30 06:46:57