24 de enero de 2012

DGV - VB.NET 2/3

hace poco mostre como llenar un DataGridView, enlazarlo con un BindinNavigator y con tres textbox a fin de mostrar informacion de una tabla de nuestra base de datos, para eso use un modulo y bueno, pueden ver el ejemplo:

http://pabletoreto.blogspot.com/2012/01/datagridview-en-vbnet.html

Pero resulta que hay personas que no les gusta trabajar con módulos, prefieren hacerlo con clases, bueno, pues lo que hay que hacer es añadir una nueva clase a nuestro proyecto, para eso, damos click derecho a la solución, seleccionamos add y luego class, así:


En mi caso le deje el nombre por defecto Class1 y luego aquí poner este código:


Imports System.Data.SqlClient
Public Class Class1
    Dim cnn As New SqlConnection(My.Settings.conexion)
    Dim sql As String = "select * from img"
    Dim sqlda As SqlDataAdapter
    Dim sqldt As DataTable

    Public Function llenarDatos() As DataTable
        Try
            cnn.Open()
            sqlda = New SqlDataAdapter(sql, cnn)
            sqldt = New DataTable
            sqlda.Fill(sqldt)

        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
        Return sqldt
    End Function
End Class

el form no debe cambiar nada y deberia lucir así:



y en el evento load de este formulario colocamos este codigo:


Public Class Form1
    Dim bs As New BindingSource
    Dim k As New Class1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        bs.DataSource = k.llenarDatos
        BindingNavigator1.BindingSource = bs
        DataGridView1.DataSource = bs
        TextBox1.DataBindings.Add("text", bs, "nombre")
        TextBox2.DataBindings.Add("text", bs, "comentarios")
        TextBox3.DataBindings.Add("text", bs, "ruta")
    End Sub
End Class


luego compilamos, ejecutamos y ya