Discussion:
CheckedListBox & DataSource
(demasiado antiguo para responder)
David
2008-01-11 00:26:26 UTC
Permalink
Muy buenas,

Microsoft Visual Studio .NET 2003
Visual Basic .NET

Tengo asociado un control CheckListBox a un dataset:

Me.CheckListBox.DataSource = Me._ds
Me.CheckListBox.ValueMember = "id"
Me.CheckListBox.DisplayMember = "name"

Este DataSet contiene un campo BOOLEANO a parte del id y del name

Sin tener que recorrer el DataSet y el CheckListBox para marcar su "casilla
de verificación, ¿Cómo se podría enlazar el dato BOOLEANO del DataSet a la
casilla de verificación del CheckListBox?

Mil gracias de antemano
SoftJaén
2008-01-12 11:55:44 UTC
Permalink
Post by David
Me.CheckListBox.DataSource = Me._ds
Me.CheckListBox.ValueMember = "id"
Me.CheckListBox.DisplayMember = "name"
Este DataSet contiene un campo BOOLEANO a parte del id y del name
Sin tener que recorrer el DataSet y el CheckListBox para marcar su
"casilla de verificación, ¿Cómo se podría enlazar el dato BOOLEANO del
DataSet a la casilla de verificación del CheckListBox?
Hola, David:

Me parece a mí que no vas a tener más remedio que recorrer el conjunto de
registros existentes, para marcar los correspondientes elementos del control
CheckListBox.

El enlazar un control CheckListBox a un origen de datos, simplemente es para
rellenar los elementos del control, como si se tratase de un control ListBox
o ComboBox, pero la casilla de verificación hay que marcarla explícitamente,
ya que hay que incluirla en la colección de elementos activados
(CheckedItems).

De todas formas, no es necesario que recorras todos los elementos existentes
en el control CheckListBox; con recorrer las filas existentes en un objeto
DataTable (no en un objeto DataSet), puedes ir marcando los elementos
adecuados:

' Enlazamos el control CheckListBox
'
Me.CheckListBox.DataSource = objetoDataTable
Me.CheckListBox.ValueMember = "id"
Me.CheckListBox.DisplayMember = "name"

' Recorrermos las filas existentes en el objeto DataTable
' para leer los valores del campo Boolean
'
Dim n As Int32 = 0

For Each row As DataRow In objetoDataTable.Rows
If row.Item("CampoBoolean").ToString = "True" Then
CheckListBox.SetItemChecked(n, True)
End If
n += 1
Next

Lo mismo hay otra forma de hacerlo sin necesidad de recorrer el objeto
DataTable, pero por ahora la ignoro.

Un saludo
--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
David
2008-01-12 15:02:07 UTC
Permalink
Mil gracias, me imaginaba que no era posible.

Loading...