0

チェックボックスのリストをレンダリングするサーバーコントロールを作成しました。 問題は、いくつかのチェックボックスとポストバックフォームをチェックすると、すべてのチェックボックスがオフになることです。ここ は私のサーバーコントロールのクラスです: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(); 
    } 


} 

任意のアイデア?

答えて

1

恐らくCreateChildControlsはビューステートを逆シリアル化するステップの後に来ます。 Controls.Add(Table)OnInitに移動しようとしましたか?

MSDN article on ASP.NET page life cycleは面白いかもしれません。コメントセクションにのみCreateChildControlsが記述されています。

CreateChildControls documentation pageに関する唯一のコメントは、メソッドのオーバーライドに対する注意です。それがあなたを助けるなら、Roy Soliverビールを買う:)

+0

こんにちはAndomar。 OnInitにControls.Add(Table)を移動しました。 –

関連する問題