Foros del Web » Programación para mayores de 30 ;) » .NET »

Formato en Columna Datagrid

Estas en el tema de Formato en Columna Datagrid en el foro de .NET en Foros del Web. Hola amigos. Acabo de empezar a programar en VB .Net, si alguien me puede ayudar, se lo agradezco de antemano. En una aplicación Windows, tengo ...
  #1 (permalink)  
Antiguo 17/10/2004, 04:38
 
Fecha de Ingreso: octubre-2004
Mensajes: 6
Antigüedad: 19 años, 6 meses
Puntos: 0
Formato en Columna Datagrid

Hola amigos.

Acabo de empezar a programar en VB .Net, si alguien me puede ayudar, se lo agradezco de antemano.
En una aplicación Windows, tengo un datagrid, una de las columnas es numerica, ¿ como puedo hacer que esa columna, esté alineada a la derecha y tenga el formato standard "##,###,##0.00" ?.

Muchas gracias
  #2 (permalink)  
Antiguo 19/10/2004, 02:21
 
Fecha de Ingreso: febrero-2004
Ubicación: Granada
Mensajes: 26
Antigüedad: 20 años, 2 meses
Puntos: 0
Para alinear a la derecha basta con indicarlo en las propiedades en tiempo de diseño con la propiedad TextAlign.
En cuanto al formato te adjunto un ejemplo:

numReg.Text = Format(CInt(numReg.Text), "#,###,##0")
  #3 (permalink)  
Antiguo 19/10/2004, 02:34
 
Fecha de Ingreso: octubre-2004
Mensajes: 6
Antigüedad: 19 años, 6 meses
Puntos: 0
Me estoy refiriendo a un Datagrid y lo que tu me dices es para un cuadro de texto.

Gracias
  #4 (permalink)  
Antiguo 19/10/2004, 02:45
 
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
  #5 (permalink)  
Antiguo 19/10/2004, 03:04
 
Fecha de Ingreso: febrero-2004
Ubicación: Granada
Mensajes: 26
Antigüedad: 20 años, 2 meses
Puntos: 0
Acabo de darme cuenta de algo.
La línea de chequeo del tipo de dato para alinear las columnas solo funciona con los datos de tipo Integer.
Con la siguiente modificación revisa aquellos que son integer, long y single.

If columna.DataType Is System.Type.GetType("System.Int16") Or columna.DataType Is System.Type.GetType("System.Int32") Or columna.DataType Is System.Type.GetType("System.Single") Then
dtcolumna.Alignment = HorizontalAlignment.Right
End If
  #6 (permalink)  
Antiguo 20/10/2004, 01:26
 
Fecha de Ingreso: octubre-2004
Mensajes: 6
Antigüedad: 19 años, 6 meses
Puntos: 0
Muchas gracias, Tolotoco
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:00.