0

J'ai créé un contrôle serveur qui affiche une liste de cases à cocher. Le problème est que lorsque je vérifie certaines des cases à cocher et le formulaire de publication, toutes les cases à cocher ne sont pas cochées. Voici ma classe de contrôle du serveur:Le contrôle de serveur personnalisé avec un tableau de cases à cocher dans asp.net n'a pas d'état de case à cocher principal

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


} 

Toutes les idées?

Répondre

1

Peut-être CreateChildControls vient après l'étape qui désérialise le viewstate. Avez-vous essayé de déplacer Controls.Add(Table) à OnInit?

Vous pourriez trouver le MSDN article on ASP.NET page life cycle une lecture intéressante. Il mentionne CreateChildControls uniquement dans la section des commentaires.

Le seul commentaire sur le CreateChildControls documentation page met en garde contre le remplacement de la méthode. Si cela vous aide, achetez Roy Soliver une bière :)

+0

Salut Andomar. déplacement Controls.Add (Table) à OnInit travaillé. –

Questions connexes