Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
ajustar automaticamente el tamaño de las celdas de un datagrid según los datos
Enviado por juantxeras el día 16 de febrero de 2006
Hola a todos· ¿Sabéis como puedo hacer que las columnas de un datagrid se
ajusten automáticamente al tamaño de los datos que muestra?
Re: ajustar automaticamente el tamaño de las celdas de un datagrid según los datos
Enviado por Ricardo el día 20 de febrero de 2006
Puedes probar poner la propiedad RowHeaderWidth = -2 despues de llenarlo. No suelo usar datagrids, o sea que no estoy seguro de que funcione con datagrids tambien. Espero que te ayude!
Re: Re: Re: ajustar automaticamente el tamaño de las celdas de un datagrid según los datos
Enviado por Ricardo el día 21 de febrero de 2006
Si se puede hacer tiene que ser algo por el estilo. A lo mejor es otra propiedad la que tienes que poner a -2. Nunca me han gustado los datagrids.. prefiero listviews, aunque sea mas trabajo. Son mas agradables de utilizar.
Re: Re: Re: Re: Re: ajustar automaticamente el tamaño de las celdas de un datagrid según l
Enviado por juantxeras el día 1 de marzo de 2006
me voy a responder yo mismo ;)
Private Function LongestField(ByRef DataSet As DataSet, ByRef DataGrid As DataGrid, ByVal NombreColumna As String) As Integer
On Error Resume Next
LongestField = 10
'el mayor igual a 0
Dim maxlength As Integer = 0
'crear una grafico
Dim g As Graphics = DataGrid.CreateGraphics() ' Take width of one blank space and add to the new width of the Column.
'convertir a un entero el ancho de la letra elegida
Dim offset As Integer = Convert.ToInt32(Math.Ceiling(g.MeasureString(" ", DataGrid.Font).Width))
Dim i As Integer = 0
Dim intaux As Integer
Dim intNomColumna As Integer
Dim straux As String
'capturar el total de filas del dataset
Dim tot As Integer = DataSet.Tables(0).Rows.Count
'desde la primer fila hasta la ultima buscar la letra mas grande
For i = 0 To (tot - 1)
straux = DataSet.Tables(0).Rows(i)(NombreColumna).ToString() ' Get the width of Current Field String according to the Font.
intNomColumna = Convert.ToInt32(Math.Ceiling(g.MeasureString(NombreColumna, DataGrid.Font).Width))
intaux = Convert.ToInt32(Math.Ceiling(g.MeasureString(straux, DataGrid.Font).Width))
If intNomColumna > intaux Then
intaux = intNomColumna
End If
If (intaux > maxlength) Then
maxlength = intaux
End If
Next
Return maxlength + offset
End Function
Public Sub AjustarColumnas(ByRef DataSet As DataSet, ByRef DataGrid As DataGrid)
Try
' Agregar el nuevo estilo a la tabla
Dim dcColumna As New DataColumn
Dim EstiloTabla As New DataGridTableStyle
Dim Tabla As String = DataSet.Tables(0).TableName.ToString
EstiloTabla.MappingName = Tabla
DataGrid.TableStyles.Clear()
DataGrid.TableStyles.Add(EstiloTabla)
'Buscar y cambiar el ancho de las columnas
For Each dcColumna In DataSet.Tables(Tabla).Columns
Dim Ancho As Integer
Ancho = LongestField(DataSet, DataGrid, dcColumna.ColumnName)
EstiloTabla.GridColumnStyles(dcColumna.ColumnName).Width = Ancho
Next
Catch ex As Exception
MsgBox("error.Auto ajustar las columnas.")
End Try
End Sub