Pregunta

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

Esto es más o menos lo que estoy tratando de hacer.Obviamente, la implementación es defectuosa, pero no puedo encontrar ninguna información sobre cómo lo haría en la práctica.Se agradece cualquier ayuda.

Editar:Lo que estoy tratando de hacer exactamente es agregar una DropDownList para cada elemento en este Repetidor y, al enviar el formulario, usar los ID de cada respuesta Sí/No para ingresarlos en una base de datos.El SqlDataReader que estoy usando tiene dos campos:El contenido de la pregunta y el ID de la pregunta.

¿Fue útil?

Solución

Creo que sería mejor usar el soporte incorporado para identificaciones dentro de un repetidor. Si el objetivo es asignar un ID para que sea fácil de encontrar el adecuado control después de que los datos han sido atado puede intentar algo como esto:

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

A continuación, en el código se puede recorrer los elementos en el repetidor hasta encontrar la etiqueta que está buscando:

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 repetidor básicamente consiste en una colección de RepeaterItems. Los RepeaterItems se especifican utilizando la etiqueta ItemTemplate. Cada RepeaterItem tiene su propio conjunto de controles que son, por la misma naturaleza de un repetidor, asociados entre sí.

Digamos que usted está tirando de los datos de repetidores en una base de datos. Cada elemento repetidor representa los datos de una fila individual en los resultados de la consulta. Así que si se asigna el IdPregunta a una etiqueta y la QuestionName a un DropDownList, el ID de la etiqueta podría coincidir con el nombre de menú desplegable.

Otros consejos

Podría quitar el control del archivo de anotación, y el gancho evento OnItemDataBound del repetidor. En ese caso, usted debe ser capaz de crear el control desplegable "manualmente", la asignación de cualquier ID que desea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top