DataGridView

Este es un potente control para mostrar datos por pantalla, tiene muchisimas opciones, trataremos de ver un ejemplo simple y luego mencionaré todo lo que yo uso cuando trabajo con un DataGridView.

'Conexión a la base de datos y obtención de los registros en un DataTable
Dim cnn As New SqlConnection
cnn.ConnectionString = _
"Data Source=..\SQLEXPRESS; Initial Catalog=BasedePrueba;
Integrated Security=True"

'Algunas lineas de este código tuvieron que ser divididas
'por no entrar en ekl ancho de pantalla.

cnn.Open()

Dim ds As New DataSet
Dim da As New SqlDataAdapter

Dim sql As String
sql = "Select * from SaldosClientes"
da.SelectCommand = New SqlCommand(sql, cnn)
da.Fill(ds)
cnn.Close()

'con esta linea obtengo un objeto DataTable
'(dt) con los registros resultantes
Dim dt As DataTable = ds.Tables(0)

'Ahora puedo asignar el DataTable (dt) al DataGridView1
DataGridView1.DataSource = dt

Con el código anterior alcanza para llenar nuestro primer DataGridView. Ahora veremos que mas se puede hacer con este control.

'Definimos que fuente usar
DataGridView1.Font = _
    New Drawing.Font("Tahoma", 8, FontStyle.Regular, GraphicsUnit.Point

'Que columnas estarán visibles
DataGridView1.Columns("Id").Visible = False
DataGridView1.Columns("Codigo").Visible = True
DataGridView1.Columns("RazonSocial").Visible = True
DataGridView1.Columns("Fecha").Visible = True
DataGridView1.Columns("Saldo").Visible = True

'Cual sera el orden de las columnas
DataGridView1.Columns("Id").DisplayIndex = 0
DataGridView1.Columns("Codigo").DisplayIndex = 1
DataGridView1.Columns("RazonSocial").DisplayIndex = 2
DataGridView1.Columns("Fecha").DisplayIndex = 3
DataGridView1.Columns("Saldo").DisplayIndex = 4

'Ancho de columnas
DataGridView1.Columns("Id").Width = 100
DataGridView1.Columns("Codigo").Width = 100
DataGridView1.Columns("RazonSocial").Width = 100
DataGridView1.Columns("Fecha").Width = 100
DataGridView1.Columns("Saldo").Width = 100

'El encabezado de las columnas
DataGridView1.Columns("Id").HeaderText = "Id"
DataGridView1.Columns("Codigo").HeaderText = "Código"
DataGridView1.Columns("RazonSocial").HeaderText = "Razón Social"
DataGridView1.Columns("Fecha").HeaderText = "Fecha"
DataGridView1.Columns("Saldo").HeaderText = "Saldo"

'La alineación de las celdas de cada columna
DataGridView1.Columns("Id").DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.BottomRight

DataGridView1.Columns("Codigo").DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.BottomLeft

DataGridView1.Columns("RazonSocial").DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.BottomLeft

DataGridView1.Columns("Fecha").DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.BottomLeft

DataGridView1.Columns("Saldo").DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.BottomRight

'La alinación del encabezado de cada columna
DataGridView1.Columns("Id").HeaderCell.Style.Alignment = _
DataGridViewContentAlignment.BottomRight

DataGridView1.Columns("Codigo").HeaderCell.Style.Alignment = _
DataGridViewContentAlignment.BottomLeft

DataGridView1.Columns("RazonSocial").HeaderCell.Style.Alignment = _
DataGridViewContentAlignment.BottomLeft

DataGridView1.Columns("Fecha").HeaderCell.Style.Alignment = _
DataGridViewContentAlignment.BottomLeft

DataGridView1.Columns("Saldo").HeaderCell.Style.Alignment = _
DataGridViewContentAlignment.BottomRight

'El formato de las columnas numéricas
DataGridView1.Columns("Saldo").DefaultCellStyle.Format = "##,##0.00"

Bueno, pasé mucho tiempo buscando todas estas opciones de configuración para dejar un DataGridView como me gustaba. Espero que les sea util y en breve estaré subiendo mas acerca de este gran control de datos.



12 Responses to “DataGridView”

  1. [...] 12, 2009 Hoy quiero mostrarles un sencillo ejemplo de como conectarse a SQL Server y llenar un DataGridView, pero sin escribir ni una sola línea de código. Es decir que haremos todo arrastrando y soltando [...]

  2. Gracias,

    Estos ejemplos son muy buenos sobre todo con la simpleza que los explicas.

    Felicidades.

  3. Jose dice:

    Muy buena tu explicación, pero me gustaría saber si puedes ayudarme, a ver como hacerlo en forma inversa, es decir, teniendo los datos en un DataGridView (Ejemplo 1 fila y 4 columnas), agregarlo a una nueva fila de una base de datos de las mismas caracteristicas (1 fila, 4 columnas), apreciaré mucho tu ayuda. Gracias.

  4. david C. dice:

    Gracias por el ejemplo de llenado y configuracion del datagridview, me sirvio bastante.

  5. Felicitaciones, simple y sencillo…un ejemplo a imitar

  6. GRAIAS POR LA INFORMACION ESTA MUY BIEN EXPLICADO ME HA SERVIDO DE MUCHO GRACIAS POR TU AYUDA.

    :-)

  7. ALEXANDER dice:

    HEY GRACIAS POR LA INFORMACION SIGUE ASI, EXCELENTEMENTE EXPLICADO Y DE VERDAD FUNCIONAL PARA NOSOTROS LOS PROGRAMADORES QUE UTILIZAMOS EL DATAGRID CON FRECUENCIA

  8. juan osuna dice:

    Hola tengo una duda que me corroe hace dias,
    como averiguo el indice de la fila que tengo seleccionada en un datagridview.
    para poder pasarla aun formulario y me enseñe los datos en el formulario completos me estoy volviendo loco

  9. DarkRex dice:

    Muy bueno
    pero me gustaría saber como hago para validar los datos ingresados en una celda del datagridview columna tipo fecha así como se hace en un maskeditbox.

  10. Y para realizar toda clase de validacion

  11. hola a todos.. quisiera q me ayudara ya q estoy trabajando con un datagridview q contiene un objeto datagridviewcomboboxcolumn ai les va el codigo para ver si me ayudan a encontrar el error o lo q le haga falta: Private Sub BtnAddRequisito_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAddRequisito.Click
    Dim sConexion As String = Negocio.Conexion
    Dim Ds_datos As New DataSet
    Dim sQuery As String CboRequisitoColumn.Name = “Materia”
    Me.DGVMaterias.Columns.Add(CboRequisitoColumn)
    sQuery = “SELECT asg_codigo as codigo, asg_nombre as descripcion FROM spsatbasignatura where asg_semestre<" & Me.CMBSemestre.Text Ds_datos = Accesar_Datos.GetDataSet(sQuery, sConexion)
    my_DGVCboColumn.DataSource = Ds_datos.Tables(0)
    my_DGVCboColumn.Name = "Datos"
    my_DGVCboColumn.DisplayMember = Ds_datos.Tables(0).Columns("descripcion").ToString
    my_DGVCboColumn.ValueMember = Ds_datos.Tables(0).Columns("codigo").ToString Me.DGVMaterias.Columns.RemoveAt(0)
    Me.DGVMaterias.Columns.Insert(0, my_DGVCboColumn)
    End Sub'el anterior crea los grid
    'el siguiente es donde quiero
    'asignar o insertar el codigo q me da el
    'objeto my_DGVCbocolumn q se encuentra dentro de DGVMaterias xq creo yo q no debo
    'hacer referencia a CboRequisitoColumnPrivate Sub Agregar_Requisitos()
    Dim sQuery As String = ""
    Dim sConexion As String = Negocio.Conexion
    Dim Ds_Datos As New DataSet
    Dim KROW As Integer = 0
    Dim aux As String
    Dim r As Integer Try For KROW = 0 To Me.DGVMaterias.RowCount – 1
    aux = Me.my_DGVCboColumn.Items(KROW).ToString
    r = CType(aux, Integer)
    sQuery = "spi_spsatbrequisito_asignatura " & Codigo & "," & r & ""
    Ds_Datos = Accesar_Datos.GetDataSet(sQuery, sConexion)
    Next KROW
    Catch ex As Exception
    MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
    End TryEnd Sub' de antemano gracias

Comentar