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

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top