Discussion:
validar y guardar CheckedListBox
(demasiado antiguo para responder)
HugoSoft
2009-04-01 00:07:36 UTC
Permalink
Tengo un CheckedListBox que lleno con los datos de una tabla y solo
mando a llamar 1 campo:
Dim Ds1 As New DataSet
Dim Da1 As New SqlClient.SqlDataAdapter("select * from tabla order by
nombre ASC", Cnn)
Da1.Fill(Ds1, "tabla")
CheckedListBox1.DataSource = Ds1.Tables("tabla")
CheckedListBox1.DisplayMember = "nombre"

Tengo un ListBox donde al dar clic sobre la casilla de CheckedListBox
me aparecen solo los sedleccionado en el listbox:
Private Sub CheckedListBox1_ItemCheck(ByVal sender As
System.Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs)
Handles CheckedListBox1.ItemCheck
If e.NewValue = CheckState.Checked Then
Me.ListBox1.Items.Add(Me.CheckedListBox1.Text)
Else
Me.ListBox1.Items.Remove(Me.CheckedListBox1.Text)
End If
End Sub

hasta aqui no hay problema.

Cuando trato de salvar el registro no encuentro la manera de que me
forme una cadena con los nombre seleccionados y me los mande a un
campos Text como: nombre1, nombre2, nombre3, etc.

Cuando grabo pongo el siguinete còdigo pero solo me pone el nùmero de
reglòn:
Dim i As Integer
For i = 0 To CheckedListBox1.Items.Count - 1
If (CheckedListBox1.GetItemChecked(i)) Then
MessageBox.Show(CheckedListBox1.GetItemText(i))
End If
Next

Alguna idea, otra cosas en la tabla de sql server 2005 como debo de
declarar el type data de los campos para que me guarde el
CheckedListBox y el ListBox? ya intente como nvarchar(500) pero solo
me guarda el nombre de la ultima casilla del CheckedListBox que
seleccione.

Gracias
SoftJaén
2009-04-01 12:40:48 UTC
Permalink
Post by HugoSoft
Tengo un CheckedListBox que lleno con los datos de una tabla y solo
CheckedListBox1.DataSource = Ds1.Tables("tabla")
CheckedListBox1.DisplayMember = "nombre"
Cuando trato de salvar el registro no encuentro la manera de que me
forme una cadena con los nombre seleccionados y me los mande a un
campos Text como: nombre1, nombre2, nombre3, etc.
Cuando grabo pongo el siguinete còdigo pero solo me pone el nùmero de
MessageBox.Show(CheckedListBox1.GetItemText(i))
Si el control CheckedListBox no estuviera enlazado a un origen de datos,
obtendrías el texto del elemento seleccionado mediante el método «ToString»
de la propiedad «CheckedItems»:

For i As Int32 = 0 To CheckedListBox1.CheckedItems.Count - 1
MessageBox.Show(CheckedListBox1.CheckedItems(i).ToString)
Next

Pero como no es así, cada elemento del control forma un objeto DataRowView,
por tanto, tendrás que referenciar dicho objeto para obtener el nombre del
elemento seleccionado:

For i As Int32 = 0 To CheckedListBox1.CheckedItems.Count - 1

' Referenciamos el objeto DataRowView
'
Dim dr As DataRowView = _
DirectCast(CheckedListBox1.CheckedItems(i), DataRowView)

' Leemos el valor del campo Nombre
'
MessageBox.Show(dr.Item("Nombre").ToString)

Next
Post by HugoSoft
otra cosas en la tabla de sql server 2005 como debo de
declarar el type data de los campos para que me guarde el
CheckedListBox y el ListBox? ya intente como nvarchar(500) pero solo
me guarda el nombre de la ultima casilla del CheckedListBox que
seleccione.
Si el campo de la tabla va a almacenar valores alfanuméricos, tendrás que
declararlo con algún tipo de dato alfanumérico, como nvarchar o varchar.
Ahora bien, no sé lo que tiene que ver el tipo de dato del campo para que
únicamente te guarde el nombre de la última casilla del control
CheckedListBox seleccionado. ¿?

Digo yo que todo dependerá del código que estés ejecutando para guardar los
datos en la tabla de la base de datos. ¿Qué valor es el que envías a la base
de datos? Si envías el valor "nombre3", ese será el valor que se guardará,
pero si envías la cadena "nombre1, nombre2, nombre3", entonces será éste el
valor que se guarde.

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.
Loading...