
Agregar manejador a combo dinamico
Publicado por Oskiman (2 intervenciones) el 13/05/2005 18:50:43
Hola, estoy trabajando en una pagina que tiene una cantidad de combos que puede variar entre corridas. Para poder crearlas utilizo una table runat=server que defino si campos inicialmente y luego agrego desde el evento Load de la vb asociada una rutina de carga de los datos. que son pares etiqueta combo y que agrego como filas de la tabla.
Para poder controlar el cambio agregue un handler usando Addhandler sobre el evento selectindexchanged. ASi
Private Sub InsertarFila(ByVal...)
Dim row As New System.Web.UI.HtmlControls.HtmlTableRow
Dim oCellTipoClasificador As New System.Web.UI.HtmlControls.HtmlTableCell
Dim oCellClasificador As New System.Web.UI.HtmlControls.HtmlTableCell
Dim oLabelTipoClasificador As New System.Web.UI.WebControls.Label
Dim oStyleTipoClasificador As New System.Web.UI.WebControls.Style
Dim oStyleClasificador As New System.Web.UI.WebControls.Style
Dim oBoPozo As BoPozo
'Seleccionar los estilos
oStyleTipoClasificador.CssClass = "THEtiq"
oStyleClasificador.CssClass = "Etiqueta"
'Setear los valores de los labels
oLabelTipoClasificador.Text = texto
Dim oddlClasificador As New System.Web.UI.WebControls.DropDownList
AddHandler oddlClasificador.SelectedIndexChanged, AddressOf ManejadorCombo
oddlClasificador.AutoPostBack = True
oddlClasificador.EnableViewState = True
oddlClasificador.ID = myid
'
' Cargar dropdownList correspondiente.
'
oddlClasificador.Items.Add(New ListItem("(Sin Especificar)", Nothing))
'Cargar el ddl a partir de la lista de Clasificadores del Tipo dado.
For Each datos As Tipo In Lista
Dim oItem As New ListItem(dato.Nombre, dato.Codigo)
oddlClasificador.Items.Add(oItem)
Next
'Setear los estilos de las columnas
oLabelTipoClasificador.ApplyStyle(oStyleTipoClasificador)
oddlClasificador.ApplyStyle(oStyleClasificador)
'Setear los labels en las celdas
oCellTipoClasificador.Controls.Add(oLabelTipoClasificador)
oCellTipoClasificador.Width = "130px"
oCellTipoClasificador.Align = "rigth"
oCellClasificador.Controls.Add(oddlClasificador)
'Agregar las columnas a la fila
row.Cells.Add(oCellTipoClasificador)
row.Cells.Add(oCellClasificador)
'Agregar la fila a la tabla
ClasifPozos.Rows.Add(row)
End Sub
Public Sub ManejadorCombo(ByVal sender As Object, ByVal e As EventArgs)
'Dim oDdl As DropDownList = CType(sender, DropDownList)
'' Response.Write(oddl.SelectedValue)
Response.Write("HOLEA")
End Sub
Espero se entienda lo que hago. En esta funcion que se llama de acuerdo a la cantidad de combos que tengo creo los datos, agrego el estilo, cargo los combos.
Mis problemas son:
1) No dispara el manejador de eventos que le defini.
2) No me mantiene la info seleccionada en los combos cuando hago un postback.
3) Despues de varios postbacks es como que los estilos se saturan y varian
Acepto cualquier sugerencia que me pueda ayudar a resolver estos problemas. Desde ya gracias
Para poder controlar el cambio agregue un handler usando Addhandler sobre el evento selectindexchanged. ASi
Private Sub InsertarFila(ByVal...)
Dim row As New System.Web.UI.HtmlControls.HtmlTableRow
Dim oCellTipoClasificador As New System.Web.UI.HtmlControls.HtmlTableCell
Dim oCellClasificador As New System.Web.UI.HtmlControls.HtmlTableCell
Dim oLabelTipoClasificador As New System.Web.UI.WebControls.Label
Dim oStyleTipoClasificador As New System.Web.UI.WebControls.Style
Dim oStyleClasificador As New System.Web.UI.WebControls.Style
Dim oBoPozo As BoPozo
'Seleccionar los estilos
oStyleTipoClasificador.CssClass = "THEtiq"
oStyleClasificador.CssClass = "Etiqueta"
'Setear los valores de los labels
oLabelTipoClasificador.Text = texto
Dim oddlClasificador As New System.Web.UI.WebControls.DropDownList
AddHandler oddlClasificador.SelectedIndexChanged, AddressOf ManejadorCombo
oddlClasificador.AutoPostBack = True
oddlClasificador.EnableViewState = True
oddlClasificador.ID = myid
'
' Cargar dropdownList correspondiente.
'
oddlClasificador.Items.Add(New ListItem("(Sin Especificar)", Nothing))
'Cargar el ddl a partir de la lista de Clasificadores del Tipo dado.
For Each datos As Tipo In Lista
Dim oItem As New ListItem(dato.Nombre, dato.Codigo)
oddlClasificador.Items.Add(oItem)
Next
'Setear los estilos de las columnas
oLabelTipoClasificador.ApplyStyle(oStyleTipoClasificador)
oddlClasificador.ApplyStyle(oStyleClasificador)
'Setear los labels en las celdas
oCellTipoClasificador.Controls.Add(oLabelTipoClasificador)
oCellTipoClasificador.Width = "130px"
oCellTipoClasificador.Align = "rigth"
oCellClasificador.Controls.Add(oddlClasificador)
'Agregar las columnas a la fila
row.Cells.Add(oCellTipoClasificador)
row.Cells.Add(oCellClasificador)
'Agregar la fila a la tabla
ClasifPozos.Rows.Add(row)
End Sub
Public Sub ManejadorCombo(ByVal sender As Object, ByVal e As EventArgs)
'Dim oDdl As DropDownList = CType(sender, DropDownList)
'' Response.Write(oddl.SelectedValue)
Response.Write("HOLEA")
End Sub
Espero se entienda lo que hago. En esta funcion que se llama de acuerdo a la cantidad de combos que tengo creo los datos, agrego el estilo, cargo los combos.
Mis problemas son:
1) No dispara el manejador de eventos que le defini.
2) No me mantiene la info seleccionada en los combos cuando hago un postback.
3) Despues de varios postbacks es como que los estilos se saturan y varian
Acepto cualquier sugerencia que me pueda ayudar a resolver estos problemas. Desde ya gracias
Valora esta pregunta


0