none
como obtener el id de una checkListbox para ser guardado a un base de datos RRS feed

  • Pregunta

  • Hola buenos dias estoy trabajando con vb.net y sql server 

    estoy llenando un checkListbox con este codigo

    Sub CargarCheckListTipoSistema()
            Dim cmd As New SqlClient.SqlCommand("mov_VisualizacionTipoSistemas")
            cmd.CommandType = CommandType.StoredProcedure
            Dim da As New SqlDataAdapter(cmd)
            Dim dt As New DataTable()
            cmd.Connection = New SqlClient.SqlConnection(conexion.ConnectionString)
            cmd.Connection.Open()
            da.Fill(dt)
            chkListTipoSistema.DataSource = dt
            chkListTipoSistema.ValueMember = dt.Columns(0).ToString
            chkListTipoSistema.DisplayMember = dt.Columns(1).ToString
            cmd.Connection.Close()
        End Sub

    pero noce como tomar el id de cada campo por ejemplo si yo checked un campo como tomar ese id y guardarlo a la base de datos

    gracias.

    martes, 17 de abril de 2018 16:12

Respuestas

  • "Alexander Valle" preguntó:

    > pero noce como tomar el id de cada campo por ejemplo si yo checked
    > un campo como tomar ese id y guardarlo a la base de datos

    Hola, Alexander:

    ¿Qué debo entender como "id de cada campo"? ¿El índice que tiene el elemento en la colección de elementos del control CheckedListBox? O como tienes enlazado el control CheckedListBox a un objeto DataTable, ¿quizás te estás refiriendo a obtener el valor del campo que has asignado a la propiedad ValueMember (dt.Columns(0).ToString) del control CheckedListBox?

    > Dim cmd As New SqlClient.SqlCommand("mov_VisualizacionTipoSistemas")

    Para que nos entendamos los dos sin ningún tipo de problemas, vamos a suponer que deseas rellenar tu control CheckedListBox con el resultado obtenido de ejecutar la siguiente consulta SQL de selección:

        Dim cmd As New SqlClient.SqlCommand("SELECT IdCliente, Nombre FROM Clientes")

    Asignándole los valores siguientes al control CheckedListBox:

        chkListTipoSistema.ValueMember = "IdCliente"
        chkListTipoSistema.DisplayMember = "Nombre"

    Cuando desees obtener los valores del campo "IdCliente" de todos aquellos elementos del control CheckedListBox que actualmente están activados, simplemente ejecutarías:

        ' Declarar una lista de enteros.
        Dim listaIdentificadores As New List(Of Integer)()
    
        ' Obtener el valor de todos los elementos actualmente activados.
        For Each item As DataRowView In chkListTipoSistema.CheckedItems
            ' Añadir el valor del campo IdCliente a la lista.
            listaIdentificadores.Add(CInt(item("IdCliente")))
        Next
    
        ' Recorrer la lista
        For Each item As Integer In listaIdentificadores
            MessageBox.Show(item.ToString())
        Next
    


    Por supuesto, conforme recorres el resultado de la lista obtenida, puedes escribir el código fuente necesario para ejecutar las consultas UPDATE con la que deseas actualizar la tabla de tu base de datos.

    Y si en lugar de obtener el valor de un campo concreto, deseas obtener el índice que cada elemento seleccionado o activado tiene en el control CheckedListBox, aquí te dejo otros ejemplos:

        ' Indice del elemento actualmente seleccionado.
        Dim index As Integer = chkListTipoSistema.SelectedIndex
        MessageBox.Show(index.ToString())
            
        ' Obtener los índices de todos los elementos actualmente activados.
        For Each item As Integer In chkListTipoSistema.CheckedIndices
            MessageBox.Show(item.ToString())
        Next

    Y si no es ni una cosa ni la otra el valor del id que deseas tomar, yo al menos te agradecería que explicases claramente el valor que deseas obtener. ;-)

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    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.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    miércoles, 18 de abril de 2018 14:59
    Moderador