Domanda

<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>

Questo è più o meno quello che sto cercando di fare. Ovviamente, l'implementazione è difettosa, ma non riesco a trovare tutte le informazioni su come mi piacerebbe andare su questo in pratica. Ogni aiuto è apprezzato.

Modifica: Quello che sto cercando di fare esattamente è aggiungere una DropDownList per ogni elemento in questo ripetitore, e su presentazione del modulo, utilizzare l'ID di di ogni risposta si / no per inserire in un database. Lo SqlDataReader che sto usando ha due campi:. Il contenuto domanda e l'QuestionID

È stato utile?

Soluzione

Penso che sarebbe meglio utilizzare il supporto incorporato per gli ID all'interno di un ripetitore. Se l'obiettivo è quello di assegnare un ID per rendere più facile per trovare l'adeguato controllo dopo i dati sono stati vincolati si potrebbe provare qualcosa di simile:

<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>

Poi, nel codice è possibile scorrere le voci del ripetitore fino a trovare l'etichetta che stai cercando:

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;
}   

Un ripetitore è costituito essenzialmente da una raccolta di RepeaterItems. I RepeaterItems vengono specificati utilizzando il tag ItemTemplate. Ogni RepeaterItem ha la sua propria serie di controlli che sono, per la stessa natura di un ripetitore, associati tra loro.

Diciamo che sta tirando i dati da un database Repeater. Ogni elemento Ripetitore rappresenta dati da una singola riga nei risultati dell'interrogazione. Quindi, se si assegna il QuestionID ad un'etichetta e il QuestionName ad una DropDownList, l'ID nell'etichetta sarebbe partita con il nome in discesa.

Altri suggerimenti

Potrebbe rimuovere il controllo dal file di markup, e agganciare evento OnItemDataBound del ripetitore. In tal caso, si dovrebbe essere in grado di creare il controllo a discesa "manualmente", l'assegnazione di tutto quello che vuoi ID.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top