2009-02-25 6 views
0

J'ai le même problème que dans la question Programmatically added User Control does not create its child controls.aux prises avec l'ajout de contrôles utilisateur par programme

Après avoir lu la question et la réponse que j'ai changé mon code qui ressemble maintenant à ceci:

foreach (ITask task in tasks) 
{ 
    TaskListItem taskListItem = LoadControl(
     typeof(TaskListItem), 
     new object[] {task} 
    ) as TaskListItem; 

    taskListItem.TaskCompleteChanged += taskListItem_TaskCompleteChanged;       

    taskListItemHolder.Controls.Add(taskListItem); 
} 

Cependant, je suis toujours d'obtenir un contrôle utilisateur dont le contrôle enfant n'a pas été instancié.

Une idée de ce que je fais mal?

Merci à l'avance

Répondre

3

Vous voulez probablement utiliser cette place:

foreach (ITask task in tasks) 
{ 
    TaskListItem taskListItem = LoadControl("~/TaskListItem.ascx") as TaskListItem; 

    taskListItem.Task = task; 
    taskListItem.TaskCompleteChanged += 
     taskListItem_TaskCompleteChanged;       

    taskListItemHolder.Controls.Add(taskListItem); 
} 

C'est parce que TaskListItem n'est pas le type de contrôle réel, mais le type de classe code-behind du contrôle. Vérifiez this page in MSDN (en bas, dans le contenu de la communauté).

1

Assurez-vous que vous ajoutez les contrôles dans la méthode CreateChildControls (vous pouvez la remplacer), aussi, donner le contrôle d'un ID (qui doit être le même à chaque fois que vous ajoutez).

Questions connexes