Aktualisieren Platzhalter während der Laufzeit
-
19-09-2019 - |
Frage
Hier ist das Problem, das ich mit Platzhalter habe:
Ich habe einen Repeater und innerhalb dieser Repeater, ich habe eine Elementvorlage. Nun wird diese Vorlage mit ein paar Tabellen formatiert, aber für diese Frage habe ich entfernt sie die Dinge einfacher zu lesen:
<asp:Repeater ID="Repeater1" OnItemDataBound="R1_ItemDataBound" runat="server">
<ItemTemplate>
<asp:PlaceHolder ID="phAnswers" runat="server"></asp:PlaceHolder>
</ItemTemplate>
</asp:Repeater>
Dann wird auf der Veranstaltung OnItemDataBound, erstelle ich einen neuen Platzhalter, binden sie an den bestehenden auf (phAnswers), aber der Platzhalter wird nicht aktualisiert, mit dem Radiobuttons / textboxs, die erstellt werden:
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)
Irgendwelche Ideen, warum phAnswers nicht mit dem neuen tempPH Platzhalter aktualisiert? Prost
Lösung
OnItemDataBound kann es zu spät sein Steuerelemente hinzufügen. Versuchen Sie es in OnItemCreated und sehen, ob das hilft. Es ist ein schneller Test - nur Ihre Repeater-Ereignisdeklaration wie folgt ändern:
OnItemCreated="R1_ItemDataBound"
Wenn diese Idee nicht hilft, können Sie diese leicht wechseln.
Bearbeiten - Ich habe gerade bemerkt etwas. Um einen Radiobuttonlist zu füllen, sollten Sie Listitem, wie folgt verwenden:
ListItem item - new ListItem("your text", "your value");
rdList.Items.Add(item);
Dies ist wahrscheinlich, warum Ihre Radiobuttonlist nicht erscheinen, aber einsamer Radiobuttons gearbeitet.
Andere Tipps
Versuchen Sie, eine Panel
anstelle eines PlaceHolder
mit