Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/10/2004, 02:45
tolotoco
 
Fecha de Ingreso: febrero-2004
Ubicación: Granada
Mensajes: 26
Antigüedad: 20 años, 2 meses
Puntos: 0
Perdona el lapsus en la respuesta anterior.
Yo uso la función que te adjunto para dar formato a los DataGrids. Pero creo las columnas, en tiempo de ejecución, asignándoles los datos y los tipos para cada columna y luego le doy formato y, además, ajusto las columnas al tamaño de los datos.
Espero que esta respuesta sí te sirva.

Un saludo

Esta es la llamada a la función una vez creadas las columnas y asignados los datos.

Datagrid1.DataSource = dts.Tables("Nombre_Tabla")
Datagrid1.TableStyles.Add(FormatoGrid(Datagrid1, dts.Tables("Nombre_Tabla")))

Esta es la función. El primer parámetro es el Datagrid del formulario, el segundo es la tabla creada en tiempo de ejecución.

Public Function FormatoGrid(ByRef Grid As DataGrid, ByRef ds As DataTable) As DataGridTableStyle
Dim tablestyle As New DataGridTableStyle
Dim dtcolumna As DataGridTextBoxColumn
Dim columna As DataColumn
Dim gr As Graphics
Dim i, j, ancho, maximo As Integer

gr = Grid.CreateGraphics
Grid.TableStyles.Clear()
tablestyle = New DataGridTableStyle
tablestyle.MappingName = ds.TableName
tablestyle.AlternatingBackColor = System.Drawing.SystemColors.Control
tablestyle.BackColor = System.Drawing.SystemColors.Control
tablestyle.ForeColor = Color.FromArgb(0, 61, 109)
tablestyle.GridLineColor = Color.FromArgb(192, 0, 0)
tablestyle.HeaderBackColor = Color.FromArgb(192, 192, 255)
tablestyle.HeaderForeColor = Color.Black
tablestyle.SelectionBackColor = Color.SteelBlue
tablestyle.SelectionForeColor = Color.Black
tablestyle.PreferredRowHeight = 20

For i = 0 To ds.Columns.Count - 1
columna = ds.Columns(i)
maximo = 0
ancho = gr.MeasureString(ds.Columns(i).ColumnName, Grid.Font).Width + 6
For j = 0 To ds.Rows.Count - 1
If Not IsDBNull(ds.Rows(j)(i)) Then
maximo = gr.MeasureString(CStr(ds.Rows(j)(i)), Grid.Font).Width + 6
End If
If (maximo > ancho) Then
ancho = maximo
End If
Next
dtcolumna = New DataGridTextBoxColumn

dtcolumna.TextBox.Enabled = True
dtcolumna.HeaderText = columna.ColumnName
dtcolumna.MappingName = columna.ColumnName
dtcolumna.Width = ancho
If columna.DataType Is i.GetType Then
dtcolumna.Alignment = HorizontalAlignment.Right
End If
tablestyle.GridColumnStyles.Add(dtcolumna)
Next
FormatoGrid = tablestyle
End Function