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, 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 [...]
Gracias,
Estos ejemplos son muy buenos sobre todo con la simpleza que los explicas.
Felicidades.
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.
Gracias por el ejemplo de llenado y configuracion del datagridview, me sirvio bastante.
Felicitaciones, simple y sencillo…un ejemplo a imitar
GRAIAS POR LA INFORMACION ESTA MUY BIEN EXPLICADO ME HA SERVIDO DE MUCHO GRACIAS POR TU AYUDA.
HEY GRACIAS POR LA INFORMACION SIGUE ASI, EXCELENTEMENTE EXPLICADO Y DE VERDAD FUNCIONAL PARA NOSOTROS LOS PROGRAMADORES QUE UTILIZAMOS EL DATAGRID CON FRECUENCIA
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
creo que con datagridview1.currentrow será suficiente
Suerte
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.
Y para realizar toda clase de validacion
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
Hola. Gracias por este post tan útil. Me estaba volviendo loco intentando adivinar como dar una alienación distinta a cada columna. El caso es que he puesto el código correspondiente en el evento Load del form que tiene el dataGrid y me da error. Me dice que hago referencia a un objeto que no existe. Alguien sabe porqué es esto? Quizás debo poner el código en otro procedimiento de evento diferente? Gracias.
Hola.. espero que leas este comment.. Me gustaria saber que propiedad del datagrid me captura un no. de ID de cliente al darle clic.
Elemplo… si yo busco personas que viven en X lugar y me aparecen 2 en el datagrid, al darle doble clic en la celda del registro que quiero me llena Varios textbox con los datos. Lo que no hace es que al darle a los 2 registros me busca los datos del ultimo regustro no del primero o tercero.. GRACIAS use un ciclo en el evento C1_CellDoubleClick (datagrid)
For x As Integer = 0 To (C1.RowCount – 2)
Label3.Text = C1.Item(0, x).Value
Next
Hola! soy nuevo en esto de los DataGridView,
estoy trabajando con Visual Stuio 2008,
Mi DUDA es:
Tengo un DataGridView y le estoy pasando los datos por medio de un “PictureBox” (producto, precio, catidad y total)
al darle CLICK al la 1era imagen, llena las celdas y con un “ImputBox” me pide la cantidad y hace la operacion (precio * cantida = total)
Pero…
Al hacer lo mismo con la imagen que sigue, o bien, con la misma imagen, Siempre me pone los DATOS en la misma FILA!
Como puedo hacerle para que por cada vez k le de un CLCK a las IMAGENES me ocupe la fila que sigue…?
Agradeceria mucho este aporte!!