Necesito crear un grupo de DropDownLists para mostrar y permitir el cambio de un grupo de propiedades de un elemento.

Tengo el siguiente código en mi página ASP.

<asp:Repeater runat="server" ID="repeaterProperties">
    <ItemTemplate>
        <p><asp:DropDownList runat="server" ID="ddProperty" OnInit="ddProperty_OnInit" /><p>
    </ItemTemplate>
</asp:Repeater>

La ddProperty_OnInit rellena el DropDownList con todos los posibles valores con una consulta de base de datos.

¿Cómo puedo ajustar el valor seleccionado de cada uno creado DropDownList de acuerdo a la Repeater‘s de la fuente de datos?

Digamos, por ejemplo, que tenemos los posibles valores de la propiedad de A, B y C.

Si la base de datos de salida para el Repeater contiene dos de los valores, A y B, el Repeater salidas de dos DropDownLists, ambos con todos 3 los valores availabla y el primero con A como valor seleccionado y el segundo con B como valor seleccionado.

Edición:

Parece que la adición de OnItemDataBound="repeater_ItemDataBound" a la Repeater y seleccionar el valor adecuado de ahí no es el camino a seguir en mi caso. Esto es debido a que también tengo que guardar la posibilidad de cambiar los valores de una base de datos.

La ItemDataBound caso de la Repeater es despedido antes de la OnClick evento en un Button y los cambios de los valores seleccionados a sus viejos valores antes de que el nuevo selecciones pueden ser salvos.

Cualquier sugerencia sobre cómo evitar esto?

Código actual:

<asp:Repeater runat="server" ID="repeaterJako" OnItemDataBound="repeater_ItemDataBound">
<ItemTemplate>
    <asp:DropDownList id="ddJako" runat="server" OnInit="ddJako_OnInit">
    </asp:DropDownList><br />
</ItemTemplate>
</asp:Repeater>
<asp:Button runat="server" id="updateButton" Text="Save" OnClick="update_OnClick" />

En el code-behind, ddJako_OnInit rellena la lista desplegable con todas las posibles opciones, mientras que el repeater_ItemDataBound utiliza el método propuesto por Bryan Parker para seleccionar el valor correcto.

InformationsquelleAutor vipirtti | 2009-02-17

2 Comentarios

  1. 4

    Tal vez me estoy entendiendo algo acerca de tu pregunta… pero parece que esto es exactamente lo que OnItemDataBound es para. 🙂

    Uso FindControl para obtener una referencia a su DropDownList en el controlador de eventos. También asegúrese de que el elemento no está en el encabezado/pie de página. El ejemplo de MSDN hace ambas cosas:

    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.onitemdatabound.aspx

    • Sí, eso es lo que yo estaba buscando. Después de leer el enlace, todo lo que me quedaba hacer era averiguar a qué echar la DataItem en.
    • Pirtu por Favor marca este como la respuesta correcta.
    • Yo lo hice, hasta que me enteré de que no ayudar a mi situación. Bueno, yo hice la figura hacia fuera sólo un minuto atrás, por lo que bien podría. Es una buena respuesta y la mía sólo agregar a ella.
  2. 1

    Con respecto al problema que he especificado en mi edición, el momento de la DataBind juega un papel importante. He utilizado para realizar el enlace de datos en el Page_Init evento, que causó la repeater_ItemDataBound caso de ser despedido antes de la button_OnClick evento.

    La solución fue pasar el enlace de datos para el Page_PreRender evento.

    La población de la DropDownList con todas las opciones se hace todavía en su OnInit evento.

Dejar respuesta

Please enter your comment!
Please enter your name here