Frage

<ItemTemplate>
    <asp:Label runat="server"><%#DataBinder.Eval(Container.DataItem, "Question")%></asp:Label>
    <asp:DropDownList runat="server" id="<%#DataBinder.Eval(Container.DataItem, "QuestionID")%>">>
        <asp:ListItem value="1" text="Yes" />
        <asp:ListItem value="0" text="No" />
    </asp:DropDownList>
<ItemTemplate>

Das ist ungefähr das, was ich zu tun bin versucht. Offensichtlich ist die Implementierung fehlerhaft, aber ich kann keine Informationen finden, wie ich dies in der Praxis gehen würde. Jede Hilfe ist willkommen.

Edit: Was ich versuche genau zu tun ist, einen Dropdownlist für jedes Element in diesem Repeater hinzufügen und nach Vorlage des Formulars verwenden, um die IDs jeden Ja / Nein-Antwort auf Eingabe in eine Datenbank. Die SqlDataReader, das ich verwende hat zwei Felder:. Die Frage Inhalt und die QuestionID

War es hilfreich?

Lösung

Ich glaube, Sie wäre besser aus für IDs in Unterstützung der eingebauten Verwendung in einem Repeater. Wenn das Ziel ist es eine ID zugewiesen ist, um es einfach die richtige Kontrolle zu finden, nachdem die Daten gebunden ist Sie könnte etwa so versuchen:

<asp:Repeater ID="Repeater1" runat="server>
    <ItemTemplate>
        <asp:Label ID="QuestionID" Visible="False" Runat="server"><%#DataBinder.Eval(Container.DataItem, "FieldContent")%></asp:Label>
        <asp:DropDownList ID="MyDropDownList" Runat="server"></asp:DropDownList>
    </ItemTemplate>
</asp:Repeater>

Dann Sie in Ihrem Code können in dem Repeater die Elemente durchlaufen, bis Sie das Etikett Sie suchen:

foreach (RepeaterItem curItem in Repeater1.Items)
{
    // Due to the way a Repeater works, these two controls are linked together.  The questionID
    // label that is found is in the same RepeaterItem as the DropDownList (and any other controls
    // you might find using curRow.FindControl)
    var questionID = curRow.FindControl("QuestionID") as Label;
    var myDropDownList = curRow.FindControl("MyDropDownList") as DropDownList;
}   

Ein Repeater besteht im Wesentlichen aus einer Sammlung von RepeaterItems. Die RepeaterItems werden mit dem Tag ItemTemplate angegeben. Jeder RepeaterItem hat seine eigene Reihe von Kontrollen, die durch die Natur eines Repeater, miteinander assoziiert sind.

Sagen Sie bitte die Repeater Daten aus einer Datenbank sind zu ziehen. Jeder Repeater Artikel stellt Daten aus einer einzelnen Zeile in den Abfrageergebnissen. Wenn Sie also das QuestionID auf ein Etikett und den QuestionName zu einem Dropdownlist zuweisen, die ID in dem Etikett würde nach unten mit dem Namen in Drop zusammenpassen.

Andere Tipps

Könnten Sie das Steuerelement aus der Markup-Datei entfernen, und das OnItemDataBound Ereignis des Repeaters einhaken. In diesem Fall sollten Sie in der Lage sein, um die Drop-down-Steuerung „von Hand“ zu erstellen, zuweisen, was ID Sie wollen.

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