2010-02-17 23 views
5

Tengo una DropDownList en una columna de plantilla de un control GridView. El GridView está vinculado a una lista de objetos. Cada objeto tiene una propiedad de tipo int que corresponde a un valor en uno de los ListItems de DropDownLists. Podría establecer el elemento seleccionado programáticamente agregando un evento DataBind al menú desplegable, pero me pregunto si hay una manera de establecer el elemento seleccionado mediante el uso de un bloque de código en el marcado aspx.Cómo establecer el elemento seleccionado DropDownList en el marcado?

Respuesta

9

ser cautelosos en este diseño. Crear caídas de cuadrícula de esta manera significa que para cada opción en un menú desplegable, va a repetir para cada fila. Esto puede agregarse rápidamente a tamaños de página que superen un MB si tiene más de unas pocas filas o varias columnas desplegables, lo que degradará el rendimiento.

Dicho esto, se puede hacer esto en el margen de beneficio mediante el uso de etiquetas de script vinculante el contexto:

<asp:DropDown id="dropDown1" SelectedValue='<%# Eval("Key") %>' runat="server"/> 

etiquetas vinculantes El contexto también le permiten hablar/funciones públicas protegidas en el control de la página/usuario como :

<asp:DropDown id="dropDown1" SelectedValue='<%# myFunction((int) Eval("Key")) %>' runat="server"/> 

public string myFunction(int key){ 
    return key.ToString(); 
} 

Como alternativa a la producción de la misma HTML repetitivo para cada fila, se podía hacer esas bajadas autocompleters gota o crear una caída oculta abajo que sólo representa el HTML una vez y luego utiliza jQuery o JavaScript para poblar toda su cliente de listas desplegables lado.

0

Se puede establecer en el marcado a través de:

<ItemTemplate> 
<asp:DropDown .. SelectedValue='<%# Eval("Key") %>' /> 
</ItemTemplate> 

depende de cómo ligarlo, está usando un control de origen de datos? En cualquier caso, he notado que este enfoque puede intentar establecer el valor antes de que los artículos se vinculen y eso puede arrojar una excepción. No estoy seguro, si hubiera sucedido una vez, pensé que podría ser eso, pero debería haberlo investigado más a fondo.

HTH.

0

también puede utilizar RowDataBound caso de GridView o puede seleccionar en el marcado según lo descrito por @ Brian

Cuestiones relacionadas