Mise à jour de l'espace réservé au cours de l'exécution
-
19-09-2019 - |
Question
Voici le problème que j'ai avec espace réservé:
J'ai un répéteur et dans ce répéteur, j'ai un modèle d'élément. Maintenant, ce modèle est formaté avec quelques tables, mais pour cette question que je les retire pour rendre les choses plus faciles à lire:
<asp:Repeater ID="Repeater1" OnItemDataBound="R1_ItemDataBound" runat="server">
<ItemTemplate>
<asp:PlaceHolder ID="phAnswers" runat="server"></asp:PlaceHolder>
</ItemTemplate>
</asp:Repeater>
Ensuite, l'événement OnItemDataBound, je crée un nouvel espace réservé, se lient à l'existant sur (phAnswers), mais l'espace réservé est pas mis à jour avec les RadioButtons / textboxs qui sont créés:
Dim rdList As New RadioButtonList
Dim newRadio As New RadioButton
If (e.Item.ItemType = ListItemType.Item) Or _
(e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim tempPH As PlaceHolder
tempPH = e.Item.FindControl("phAnswers")
For x As Integer = 0 To (t_MC.Count - 1)
newRadio = New RadioButton
newRadio.ID = "Answer" + x.ToString
newRadio.Text = t_MC(x).Value
rdList.Controls.Add(newRadio)
Next
tempPH.Controls.Add(rdList)
Toutes les idées pourquoi phAnswers est pas mis à jour avec le nouveau espace réservé tempPH? Vive
La solution
OnItemDataBound peut être trop tard pour ajouter des contrôles. Essayez-le dans OnItemCreated et voir si cela aide. Il est un test rapide - il suffit de modifier votre déclaration d'événement répéteur comme ceci:
OnItemCreated="R1_ItemDataBound"
Si cette idée ne suffit pas, vous pouvez facilement basculer en arrière.
Edit - Je viens de remarquer quelque chose. Pour remplir un RadioButtonList, vous devez utiliser ListItems, comme ceci:
ListItem item - new ListItem("your text", "your value");
rdList.Items.Add(item);
Ceci est probablement la raison pour laquelle votre RadioButtonList ne semble pas, mais les boutons radio ont travaillé seuls.
Autres conseils
Essayez d'utiliser un Panel
au lieu d'un PlaceHolder