Genesis Vargas J

Agregar / Eliminar filas, Filtrar, Cargar y Guardar Información en un Datagridview Visual Basic .NET y C#

Comparte:

Hola amigos, en este tutorial les enseñaré / Mostraré como hacer operaciones básicas al momento de utilizar un datagridview en algún proyecto.

Se trata de poder agregar registros (filas) o eliminarlos del mismo datgridview; Hacer un filtro de búsqueda en él, cargar información desde la base de datos, etc.

Primero creamos un proyecto de Visual studio (en este tutorial he utilizado Visual Basic .NET y C#) y empezamos hacer la interfaz gráfica, como resultado nos debe quedar así:

Para este ejemplo vamos a tener que importar la clase System.Data,OleDb (porque vamos a trabajar con access). La cadena de conexión seria esta:

Dim Con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + "\\Cliente.accdb;")

Para cargar los registros desde la base de datos hasta el datagridview tendríamos que usar esta función declada como Datatable:

Function CargarRegistrosBD(ByVal dgv As DataGridView) As DataTable
        Con.Open()
        Dim dt As New DataTable()
        Dim cmd As New OleDbCommand("SELECT [NombreCliente], [Direccion], [Telefono] FROM Cliente", Con)
        Dim da = New OleDbDataAdapter(cmd)
        da.Fill(dt)
        Con.Close()
        Return dt
End Function

Para guardar los registros desde el datagridview hasta la base de datos sería así:

Function GuardarRegistrosBD(ByVal dgv As DataGridView) As Boolean
        Dim numreg As Integer
        Con.Open()       
        For i = 0 To dgv.Rows.Count - 1
            Using cmd As New OleDbCommand("INSERT INTO Cliente([NombreCliente],[Direccion], [Telefono]) VALUES(@nom, @dir, @tel)", Con)
                cmd.Parameters.Clear()
                cmd.Parameters.Add("@nom", OleDbType.VarChar).Value = dgv.Rows(i).Cells(0).Value
                cmd.Parameters.Add("@dir", OleDbType.VarChar).Value = dgv.Rows(i).Cells(1).Value
                cmd.Parameters.Add("@tel", OleDbType.VarChar).Value = dgv.Rows(i).Cells(2).Value
                numreg += cmd.ExecuteNonQuery()
            End Using
        Next
        If numreg > 0 Then
            GuardarRegistrosBD = True
        Else
            GuardarRegistrosBD = False
        End If
        Con.Close()
End Function

Para buscar o hacer un filtro en el datgridview al momento de que escríbamos algo en el textbox de busqueda utilizaríamos esta función: Filtro definida como datatable:

Function Filtro(ByVal busq As String) As DataTable
        con.Open()
        Dim dt As New DataTable()
        Dim cmd As New OleDbCommand("SELECT [NombreCliente], [Direccion], [Telefono] FROM Cliente WHERE NombreCliente LIKE '%" & busq & "%'", Con)
        Dim da = New OleDbDataAdapter(cmd)
        da.Fill(dt)
        con.Close()
        Return dt
End Function

Listo, ahora en el evento Click del boton de cargar registros (BtnCargarRegistrosBaseDatos) colocamos el código de la función para cargar dichos registros; y en el evento Click del boton guardar registros (BtnGuardarABaseDatos) colocamos un condicional que primero preguntaría si el datgridview no esta vacío y luego preguntaría que respuesta trajo la funcion GuardarRegistrosBD: falso o verdadero... Al final sería así:

If DgvOperaciones.Rows.Count > 0 Then
            If GuardarRegistrosBD(DgvOperaciones) Then
                MessageBox.Show("Registros guardados")
                DgvOperaciones.Rows.Clear()
            Else
                MessageBox.Show("No se pudieron guardar los registros")
            End If
End If

Ahora para pasar los datos digitados en los textbox's hasta el datgridview , hacemos esto (preguntamos si los textbox's no estan vacíos y procedemos a agregar los datos en el orden de las columnas):

If TxtDireccion.Text <> "" And TxtNombre.Text <> "" And TxtTelefono.Text <> "" Then
            DgvOperaciones.Rows.Add(TxtNombre.Text, TxtDireccion.Text, TxtTelefono.Text)
        Else
            MessageBox.Show("Completa los campos")
End If

Y por último para eliminar la fila de un registro que no queramos guardar en la base de datos, hacemos esto (preguntamos si el datagrid no esta vacío y procedemos a eliminar la fila seleccionada):

If DgvOperaciones.Rows.Count > 0 Then
            DgvOperaciones.Rows.RemoveAt(DgvOperaciones.CurrentRow.Index)
End If

Bueno amigos, espero les siva este pequeño ejemplo ya que he visto muchos que no tienen mucha claridad en cuanto datgridviews se refieren. No te olvides de compartir este tutorial, de comentar y de seguirme en facebook, youtube, twitter y obviamente aquí en mi página web.

Adjunto el proyecto de Visual Studio 2010 en Visual Basic .NET y C#.

  

Comentarios


genesis vargas

Soy Genesis Vargas Jiménez, autor de éste blog. Me gusta desarrollar software en todas las plataformas (web, móvil y desktop) y compartir conocimiento para ayudar a muchas personas.

Desde el 2015 soy MVP Microsoft en Visual Studio y tecnologías de desarrollo, reconocimiento que me enorgullece mucho.

MVP Genesis Vargas J

A PHP Error was encountered

Severity: Core Warning

Message: Module 'timezonedb' already loaded

Filename: Unknown

Line Number: 0

Backtrace: