Actualización de marcador de posición en tiempo de ejecución
-
19-09-2019 - |
Pregunta
aquí es el problema que estoy teniendo con el marcador de posición:
tengo un repetidor y dentro de ese repetidor, tengo una plantilla de elementos. Ahora bien, esta plantilla está formateado con un par de mesas, pero para esta pregunta que les han quitado para hacer las cosas más fáciles de leer:
<asp:Repeater ID="Repeater1" OnItemDataBound="R1_ItemDataBound" runat="server">
<ItemTemplate>
<asp:PlaceHolder ID="phAnswers" runat="server"></asp:PlaceHolder>
</ItemTemplate>
</asp:Repeater>
A continuación, en el caso OnItemDataBound, creo un nuevo marcador de posición, se unen a los ya existentes en (phAnswers), sin embargo, el marcador de posición no se actualiza con los botones de radio / textboxs que se crean:
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)
Cualquier idea por qué phAnswers no se actualiza con el nuevo marcador de posición tempPH? Saludos
Solución
OnItemDataBound puede ser demasiado tarde para agregar controles. Probarlo en OnItemCreated y ver si eso ayuda. Es una prueba rápida - acaba de cambiar su declaración evento repetidor de la siguiente manera:
OnItemCreated="R1_ItemDataBound"
Si esta idea no funciona, se puede cambiar fácilmente de nuevo.
Editar - Me he dado cuenta de algo. Para rellenar un RadioButtonList, se debe utilizar ListItems, como esto:
ListItem item - new ListItem("your text", "your value");
rdList.Items.Add(item);
Esta es probablemente la razón por su RadioButtonList no apareció, pero los botones de radio solitarios trabajaron.
Otros consejos
Trate de usar un Panel
en lugar de un PlaceHolder