Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/12/2012, 16:02
Avatar de Lerolero
Lerolero
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 12 años, 7 meses
Puntos: 0
Recorrer checkbox y RadioButtons creados dinamicamente

Hola,

Tengo un grupo de chekBox que creo dinamicamente según una base de datos, al frente de estos checkbox, creo dos radiobuttons dinamicos contenidos en un panel.
ejemplo:

PRUEBAS APROBADO NOAPROBADO
---CHK--- ---OPT_A--- ---OPT_B---
---CHK--- ---OPT_A--- ---OPT_B---

Este es el codigo:
Código vb:
Ver original
  1. 'Crear checkbox dinamicamente
  2.    Public Sub CrearCasillas()
  3.         Dim Consulta As String
  4.         Dim ds As New DataSet
  5.         Consulta = "SELECT * FROM AUTORIZACION_TAB"
  6.         Try
  7.             'Se ejecuta la consulta
  8.            ADONet_Query(ds, Consulta)
  9.  
  10.             Dim k As Integer = 1
  11.             'Se recorren los datos de la consulta
  12.            For i = 0 To ds.Tables(0).Columns.Count - 1 Step 1
  13.                 'Se devuelve una cadena con determinado 7 caracteres
  14.                Dim titulocampo As String = Mid(ds.Tables(0).Columns(i).ColumnName, 1, 7)
  15.                 'Si la cadena devuelta es igual a PRUEBA_
  16.                If titulocampo = "PRUEBA_" Then
  17.                     'Se extraen los 7 primeros caracters de la cadena
  18.                    Dim nombre As String = ds.Tables(0).Columns(i).ToString.Remove(0, 7)
  19.                     'Se crea el checkbox
  20.                    Dim chk_pruebas = New CheckBox
  21.                     Dim opt_aprobado = New RadioButton
  22.                     Dim opt_noaprobado = New RadioButton
  23.                     Dim panel_opt = New Panel
  24.                     Dim panel_chk = New Panel
  25.                     'Se establecen propiedades por defecto
  26.                    With chk_pruebas
  27.                         .Text = nombre
  28.                         .Name = "chk_" + nombre
  29.                         .Size = New System.Drawing.Size(200, 17)
  30.                         .Font = New System.Drawing.Font("Arial", 8, FontStyle.Bold)
  31.                         .Location = New System.Drawing.Point(34, 10)
  32.                     End With
  33.  
  34.                     'Se establecen propiedades por defecto
  35.                    With opt_aprobado
  36.                         .Text = nombre
  37.                         .Name = "opt_aprobado_" + nombre
  38.                         .Enabled = False
  39.                         .Size = New System.Drawing.Size(17, 16)
  40.                         .Location = New System.Drawing.Point(34, 10)
  41.                     End With
  42.  
  43.                     'Se establecen propiedades por defecto
  44.                    With opt_noaprobado
  45.                         .Text = nombre
  46.                         .Name = "opt_noaprobado_" + nombre
  47.                         .Enabled = False
  48.                         .Size = New System.Drawing.Size(17, 16)
  49.                         .Location = New System.Drawing.Point(150, 10)
  50.                     End With
  51.  
  52.                     With panel_chk
  53.                         .Name = "panel_" + nombre
  54.                         .BackColor = Color.PapayaWhip
  55.                         .BorderStyle = BorderStyle.Fixed3D
  56.                         .Size = New System.Drawing.Size(285, 37)
  57.                         .Location = New System.Drawing.Point(0, k * 32)
  58.                         .Controls.Add(chk_pruebas)
  59.  
  60.                     End With
  61.  
  62.                     With panel_opt
  63.                         .Name = "panel_" + nombre
  64.                         .BackColor = Color.PapayaWhip
  65.                         .BorderStyle = BorderStyle.Fixed3D
  66.                         .Size = New System.Drawing.Size(233, 37)
  67.                         .Location = New System.Drawing.Point(0, k * 32)
  68.                         .Controls.Add(opt_aprobado)
  69.                         .Controls.Add(opt_noaprobado)
  70.                     End With
  71.  
  72.                     k += 1
  73.                     'Se adiccionan los checkbox al panel
  74.  
  75.                     Me.panel_check.Controls.Add(panel_chk)
  76.                     Me.panel_controles.Controls.Add(panel_opt)
  77.                     'Se crea un evento delegado cada de chk_pruebas cada vez que un chekbox cambie
  78.                    AddHandler chk_pruebas.CheckedChanged, AddressOf CheckBox_CheckedChanged
  79.                 End If
  80.             Next i
  81.         Catch ex As Exception
  82.             MsgBox(ex.Message)
  83.         End Try
  84.  
  85.     End Sub


Accedo a los checkBox de la siguiente forma:
Código vb:
Ver original
  1. Private Sub CheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
  2.         'Se crea objeto que hereda todos los chekbox
  3.        Dim checkBox As CheckBox = TryCast(sender, CheckBox)
  4.         'Se muestra si el checkbox esta chekqueado o no
  5.        If checkBox IsNot Nothing Then
  6.             Dim titulochk As String = checkBox.Name.Remove(0, 4)
  7.            
  8.            
  9.             'opt_botones.Enabled = True
  10.            ' MessageBox.Show(checkBox.CheckState)
  11.            MessageBox.Show(titulochk)
  12.         End If
  13.     End Sub

Lo que quiero hacer es que cuando los checkbox se activen, se coloque la propiedad de los radiobuttons enabled = true y si se desactivan de nuevo en false. Y tambien recorrerlos para guardar en la base de datos

Espero me haya hecho entender...