Muchas veces nos podemos encontrar con el problema de querer rellenar los datos de un control DropDownList que se encuentra adentro de un ListView, y de paso puede haber mayor complejidad si está adentro de un InsertItemTemplate.

Lo primero que tenemos que hacer es crear el elemento en nuestro código fuente, en este caso se usa el lenguaje VB; pero es fácil pasarlo a C#.

Protected Sub ListView1_ItemCreated(sender As Object, e As ListViewItemEventArgs)
Dim ddl1 As DropDownList = DirectCast(e.Item.FindControl(“miDDL”), DropDownList)
If ddl1 IsNot Nothing Then
Dim dsS1List As New DataSet()
ddl1.DataSource = dsS1List
ddl1.DataTextField = “nombre”
ddl1.DataValueField = “valor_asignado”
ddl1.DataBind()
End If
End Sub

Claro que tenemos que crear el Datasource por código para que funcione. No debemos olvidarnos que en la página .aspx debe tener un formato similar a este, en el cual vamos a rellenar el miDDL con años:




Ahora hay que cargar la lista de años en el Dropdownlist en InsertItemTemplate. Por lo que este punto tenemos que elegir el evento correcto para enlazar los años con el control. Si volvemos a elegir el evento ItemDataBound no se unirá porque se renderiza una vez creados los controles y los tiempos de enlace de datos.

Nosotros hemos elegido el evento ItemCreated para este caso.

Protected Sub ListView1_ItemCreated(sender As Object, e As ListViewItemEventArgs)
If e.Item.ItemType = ListViewItemType.InsertItem Then
Dim ddl As DropDownList = DirectCast(e.Item.FindControl(“miDDL”), DropDownList)
If ddl IsNot Nothing Then
ddl.DataSource = CargarAnos()
ddl.DataTextField = “Ano”
ddl.DataValueField = “Valor”
ddl.DataBind()
End If
End If
End Sub

Algo a destacar, se está verificando ItemType antes de cargar el control, porque tenemos que rellenar el Dropdownlist que tiene el InsertItemTemplate.
Así que tenemos que elegir el evento ItemCreated para enlazar datos de los años a la lista desplegable.

(Visitado 393 veces, 1 visitas hoy)