6 de febrero de 2012

ComboBox, ListBox y ListView en VB.NET

Ejemplo de como llenar controles ComboBox, ListBox y ListView en VB.NET, tomar en cuenta lo siguiente:
la base de datos esta diseñada en SQL Express 2008, la tabla se llama img, los campos son: nombre, comentarios y ruta tal como se muestra:


El ejemplo se realizara en Visual Basic, así que creamos un nuevo proyecto con nombre Controles:


mostrare los tres controles en un mismo formulario con el siguiente diseño:


ahora nos conectaremos a la base de datos, para esto dar click derecho en el proyecto y seleccionar propiedades


y escogemos la pestaña Settings en el lado izquierdo, ademas cambiamos el valor de Name a: con y el de Type a Connection String tal como se muestra


luego en value damos al botón examinar al final del campo


y obtendremos una nueva ventana la cual debe tener los campos siguientes, en mi caso esta llena con mi servidor de base de datos y la base a la que me conectare, pero deberán llenar esto según sean sus especificaciones


damos OK y guardamos los cambios en el Settings del proyecto, luego puede notarse que ya tendremos el app.config en el Solution Explorer de nuestro proyecto


al abrir el app.config, el connectionStrings debería estar así: 

<connectionStrings>
        <add name="controles.My.MySettings.con" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=imagenes;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    connectionStrings>

pero debe modificarse para no tener problemas, simplemente dejar la especificación del nombre tal como se muestra:

<connectionStrings>
        <add name="con" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=imagenes;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    connectionStrings>



Guardamos y ahora queda añadir una referencia, para esto click derecho sobre el proyecto y añadir referencia tal como se muestra:





Presionando botón ComboBox

listo, ahora en el formulario, fijarse para el caso del ComboBox que para cargar valores debe presionarse el botón ComboBox y que mostrare en este control los valores de la columna comentarios pero al seleccionar una en especifico se mostrara en el textbox el valor de la columna nombre correpondiente, para esto ustedes pueden verificar las propiedades:

ComboBox1.DataSource = DS.Tables(0)
            ComboBox1.DisplayMember = "comentarios"
            ComboBox1.ValueMember = "nombre"


Así el código para el comboBox queda:

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration

Public Class Form1
   
    Dim sql As String = ConfigurationManager.ConnectionStrings("con").ConnectionString.ToString
    Dim cnn As SqlConnection

    Private Sub BComboBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BComboBox.Click
        cnn = New SqlConnection(Sql)
        Try
            cnn.Open()
            Dim sentence As String = "select * from img"
            Dim DA As New SqlDataAdapter(sentence, cnn)
            Dim DS As New DataSet
            DA.Fill(DS)
            ComboBox1.DataSource = DS.Tables(0)
            ComboBox1.DisplayMember = "comentarios"
            ComboBox1.ValueMember = "nombre"
        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString, _
                            "error", MessageBoxButtons.OK, _
                            MessageBoxIcon.Error)
        Finally
            If cnn.State = ConnectionState.Open Then
                cnn.Close()
            End If
        End Try
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        TextBox1.Text = ComboBox1.SelectedValue.ToString
    End Sub

End Class




Presionando botón ListBox

Para el ListBox, al presionar el boton ListBox seleccionaremos la columna comentarios de la tabla img y al seleccionar uno en especifico se mostrara el valor de este en el textbox

Private Sub BListBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BListBox.Click
        cnn = New SqlConnection(sql)
        Try
            cnn.Open()
            Dim strSQL As String
            strSQL = "SELECT comentarios FROM img "
            Dim command As New SqlCommand(strSQL, cnn)
            Dim reader As SqlDataReader = command.ExecuteReader()
            While reader.Read()
                ListBox1.Items.Add(reader.GetString(0))
            End While
            reader.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString, _
                            "error", MessageBoxButtons.OK, _
                            MessageBoxIcon.Error)
        Finally
            If cnn.State = ConnectionState.Open Then
                cnn.Close()
            End If
        End Try
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        TextBox2.Text = ListBox1.SelectedItem.ToString
    End Sub




Presionando botón ListView

se mostraran todos los datos de la tabla img al presionar el boton ListView

Private Sub MostrarClientes()
        Dim objListItem As New ListViewItem
        Me.ListView1.Items.Clear()

        For Each drw As DataRow In ds.Tables("img").Rows
            objListItem = ListView1.Items.Add(drw.Item("nombre").ToString, 0)
            objListItem.SubItems.Add(drw.Item("comentarios").ToString)
            objListItem.SubItems.Add(drw.Item("ruta").ToString)
        Next
    End Sub


    Private Sub BListView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BListView.Click
        ListView1.Columns.Clear()
        ListView1.CheckBoxes = True

        ListView1.Columns.Add("Nombre", 100, HorizontalAlignment.Center)
        ListView1.Columns.Add("Comentarios", 100, HorizontalAlignment.Center)
        ListView1.Columns.Add("Ruta", 200, HorizontalAlignment.Center)
        ListView1.View = View.Details
        cnn = New SqlConnection(sql)
        cmd = New SqlCommand("SELECT * FROM img", cnn)
        da = New SqlDataAdapter(cmd)
        cnn.Open()
        da.Fill(ds, "img")
        cnn.Close()
        MostrarClientes()

    End Sub


Compilamos, ejecutamos y ya esta.



lunes, febrero 06, 2012