Controlar eventos en controles creados dinamicamen
Publicado por Yomero (21 intervenciones) el 06/09/2007 07:32:12
Hola a todos...
Les comento sobre un problemilla que tengo y espero alguno me pueda ayudar con ello.
Tengo una asp:table donde agrego por programacion controles Label y RadioButtonList en filas diferentes, y necesito controlar el evento SelectIndexChanged del control RadioButtonList (dependiendo del index seleccionado realizo ciertas cosas. He leido y he dado mas o menos con la solucion, el problema es que no he dado en como controlar el evento autopostback, ya que al cambiar de index del RadioButtonList, se me desaparece el asp:table donde tengo agregado todos los demas controles RadioButtonList y Labels añadidos anteriormente (o sea la tabla desaparece completamente con todo y los controles).
A grandes rasgos te pongo el codigo aspx.vb que estoy utilizando
Partial Class Encuestas
Inherits System.Web.UI.Page
Dim drQuery As SqlDataReader
'declaramos las variables para utilizar la tabla dinamica
Dim Celda As TableCell
Dim Fila As TableRow
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack = False Then
'limpiamos la tabla dinamica
Me.tbPreguntas.Rows.Clear()
'ejecutamos el reader para obtener las preguntas
drQuery = dsPregunta.Select(DataSourceSelectArguments.Empty)
If drQuery.HasRows Then
MuestraPreguntaPadre()
End If
End If
End Sub
Sub MuestraPregunta()
'leemos la pregunta
drQuery.Read()
'insertamos una fila en la tabla en ella pondremos la pregunta
Fila = New TableRow()
'le agregamos su primera celda
Celda = New TableCell()
'creamos un label que contendra el contenido de la pregunta
Dim lblpregunta As Label = New Label()
lblpregunta.Text = Trim(drQuery("Nombre"))
Celda.Controls.Add(lblpregunta)
Fila.Cells.Add(Celda)
'y la anexamos a la tabla
Me.tbPreguntas.Rows.Add(Fila)
'Creamos la segunda fila y en ella ponemos las posibles respuestas
Fila = New TableRow()
'creamos un radiobuttonlist con las posibles respuestas de la pregunta
Dim rblRespuestas As RadioButtonList = New RadioButtonList()
rblRespuestas.ID = "rblRespuestas_" & Me.drQuery("Id_Pregunta")
'----------
'En esta parte agrego como items (varian en cantidad) del radiobuttomlist las respuestas obtenidas de otro reader
'----------
'le agregamos la segunda celda con las respuestas
Celda = New TableCell()
'Añadimos un Evento relacionado con el Control radio button list añadido
AddHandler rblRespuestas.SelectedIndexChanged, AddressOf MirblRespuestas_SelectedIndexChanged
rblRespuestas.AutoPostBack = True
'añadimos el radio button list
Celda.Controls.Add(rblRespuestas)
Fila.Cells.Add(Celda)
'y la anexamos a la tabla
Me.tbPreguntas.Rows.Add(Fila)
End Sub
'Declaramos el Evento del Control Button añadido
Public Sub MirblRespuestas_SelectedIndexChanged(ByVal Sender As Object, ByVal e As System.EventArgs)
Dim rbl As RadioButtonList
rbl = DirectCast(Sender, RadioButtonList)
'----------
'En esta parte dependiendo de la seleccion debo realizar ciertas acciones, obtengo el valor del index seleccionado
'----------
End Sub
Agradeciendo de antemano la ayuda que puedan brindarme.
Saludos.
Les comento sobre un problemilla que tengo y espero alguno me pueda ayudar con ello.
Tengo una asp:table donde agrego por programacion controles Label y RadioButtonList en filas diferentes, y necesito controlar el evento SelectIndexChanged del control RadioButtonList (dependiendo del index seleccionado realizo ciertas cosas. He leido y he dado mas o menos con la solucion, el problema es que no he dado en como controlar el evento autopostback, ya que al cambiar de index del RadioButtonList, se me desaparece el asp:table donde tengo agregado todos los demas controles RadioButtonList y Labels añadidos anteriormente (o sea la tabla desaparece completamente con todo y los controles).
A grandes rasgos te pongo el codigo aspx.vb que estoy utilizando
Partial Class Encuestas
Inherits System.Web.UI.Page
Dim drQuery As SqlDataReader
'declaramos las variables para utilizar la tabla dinamica
Dim Celda As TableCell
Dim Fila As TableRow
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack = False Then
'limpiamos la tabla dinamica
Me.tbPreguntas.Rows.Clear()
'ejecutamos el reader para obtener las preguntas
drQuery = dsPregunta.Select(DataSourceSelectArguments.Empty)
If drQuery.HasRows Then
MuestraPreguntaPadre()
End If
End If
End Sub
Sub MuestraPregunta()
'leemos la pregunta
drQuery.Read()
'insertamos una fila en la tabla en ella pondremos la pregunta
Fila = New TableRow()
'le agregamos su primera celda
Celda = New TableCell()
'creamos un label que contendra el contenido de la pregunta
Dim lblpregunta As Label = New Label()
lblpregunta.Text = Trim(drQuery("Nombre"))
Celda.Controls.Add(lblpregunta)
Fila.Cells.Add(Celda)
'y la anexamos a la tabla
Me.tbPreguntas.Rows.Add(Fila)
'Creamos la segunda fila y en ella ponemos las posibles respuestas
Fila = New TableRow()
'creamos un radiobuttonlist con las posibles respuestas de la pregunta
Dim rblRespuestas As RadioButtonList = New RadioButtonList()
rblRespuestas.ID = "rblRespuestas_" & Me.drQuery("Id_Pregunta")
'----------
'En esta parte agrego como items (varian en cantidad) del radiobuttomlist las respuestas obtenidas de otro reader
'----------
'le agregamos la segunda celda con las respuestas
Celda = New TableCell()
'Añadimos un Evento relacionado con el Control radio button list añadido
AddHandler rblRespuestas.SelectedIndexChanged, AddressOf MirblRespuestas_SelectedIndexChanged
rblRespuestas.AutoPostBack = True
'añadimos el radio button list
Celda.Controls.Add(rblRespuestas)
Fila.Cells.Add(Celda)
'y la anexamos a la tabla
Me.tbPreguntas.Rows.Add(Fila)
End Sub
'Declaramos el Evento del Control Button añadido
Public Sub MirblRespuestas_SelectedIndexChanged(ByVal Sender As Object, ByVal e As System.EventArgs)
Dim rbl As RadioButtonList
rbl = DirectCast(Sender, RadioButtonList)
'----------
'En esta parte dependiendo de la seleccion debo realizar ciertas acciones, obtengo el valor del index seleccionado
'----------
End Sub
Agradeciendo de antemano la ayuda que puedan brindarme.
Saludos.
Valora esta pregunta


0