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

Formato a columnas autogeneradas en Datagrid o Gridview

Estas en el tema de Formato a columnas autogeneradas en Datagrid o Gridview en el foro de .NET en Foros del Web. Como podría hacer para darle formato de fecha o numérico a columnas autogeneradas en un DataGrid o Gridview ??? Lo que necesito es dar formato ...
  #1 (permalink)  
Antiguo 11/03/2010, 08:37
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 8 meses
Puntos: 0
Formato a columnas autogeneradas en Datagrid o Gridview

Como podría hacer para darle formato de fecha o numérico a columnas autogeneradas en un DataGrid o Gridview ???

Lo que necesito es dar formato a cierta columna del
datagrid. Ejemplo a una fecha.

Si fueran columnas fijas serían en Data Formatting
Expression lo siguiente: "{0:dd-MM-yyyy}"

Pero como hago esto en tiempo de ejecución puesto que las
columnas se crean dinámicamente.

Agradezco cualquier ayuda
  #2 (permalink)  
Antiguo 11/03/2010, 09:37
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 19 años, 4 meses
Puntos: 50
Respuesta: Formato a columnas autogeneradas en Datagrid o Gridview

Hola unidadm haber si estos enlaces te pueden servir :)


Enlace 1


Enlace 2

O bien esta linea

Código:
DataGrid.Columns[TuColumna].DefaultCellStyle.Format = "c"; //en este caso convierte el tipo de columna en currency
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #3 (permalink)  
Antiguo 11/03/2010, 10:14
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Formato a columnas autogeneradas en Datagrid o Gridview

Gracias por la rpta, pero mi problema es con web forms
  #4 (permalink)  
Antiguo 11/03/2010, 10:58
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 19 años, 4 meses
Puntos: 50
Respuesta: Formato a columnas autogeneradas en Datagrid o Gridview

BoundField.DataFormatString te puede ayudar

PD. Cuando tengas dudas de webForms trata de utilizar el foro correspondiente
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #5 (permalink)  
Antiguo 11/03/2010, 11:01
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 19 años, 4 meses
Puntos: 50
Respuesta: Formato a columnas autogeneradas en Datagrid o Gridview

Te dejo una parte de código haber si te puede ayudar

Código C++:
Ver original
  1. BoundField obj = new BoundField();
  2. obj.DataField = "NombreDeColumnaDeTuDataSet";
  3. obj.HeaderText = "Encabezado";
  4. obj.ItemStyle.CssClass = "Si quieres darle estilo con css";
  5. obj.DataFormatString = "{0:C}"; //tipo de formato
  6.  
  7. GridView.Columns.Add(obj);
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #6 (permalink)  
Antiguo 11/03/2010, 11:28
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Formato a columnas autogeneradas en Datagrid o Gridview

Hola erick_arcini

agradezco mucho tu ayuda, pero mi problema es con columnas autogeneradas, dependiendo del select de la base de datos, no agrego manualmente las columnas como esta en el ejemplo que me envias, de todas maneras muchas gracias
  #7 (permalink)  
Antiguo 11/03/2010, 11:46
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 19 años, 4 meses
Puntos: 50
Respuesta: Formato a columnas autogeneradas en Datagrid o Gridview

Ok, podrías hacer esto en tu evento DataBind del Grid

Código:
        DataControlField xxx = gridProductos.Columns[TuColumna];
        if (xxx is BoundField)
        {
            BoundField boundField = xxx as BoundField;
            boundField.DataFormatString = "{0:d}"; 
        }
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #8 (permalink)  
Antiguo 11/03/2010, 15:15
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Formato a columnas autogeneradas en Datagrid o Gridview

Lo intenté de esa forma, aunque no encuentro el evento al que te refieres, lo intente en los eventos Databinding y Databound y nada, y es que resulta que al ser columnas autogeneradas el gridview.columns.count siempre devuelve 0.

Despues de varios intentos he logrado hacer lo siguiente, quiza no sea muy optimo, pero por el momento me sirve y quiza a alguien le pueda servir tb, pero de todas formas sigo buscando una manera mas simple. Este codigo aplica el nombre de los caption de las columnas del datatable al gridview y aplica el formato de fecha a las columnas, ojo que el gridview tiene mas columnas que el datatable porque tiene 2 templates al inicio

Código:
Protected Sub gv_lista_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gv_lista.RowDataBound
            Dim li_columna, li_diferencia As Integer
            Dim ls_columna As String
            Dim ldt_dt As New DataTable
            Dim lgv_gv As GridView = CType(sender, GridView)

            If lgv_gv.DataSource.GetType Is GetType(DataTable) Then
                ldt_dt = lgv_gv.DataSource
            ElseIf lgv_gv.DataSource.GetType Is GetType(DataView) Then
                ldt_dt = lgv_gv.DataSource.table
            End If

            If e.Row.RowType = ListItemType.Header Then
                For li_columna = 0 To e.Row.Cells.Count - 1
                    If Not ldt_dt.Columns(e.Row.Cells(li_columna).Text) Is Nothing Then
                        e.Row.Cells(li_columna).Text = ldt_dt.Columns(e.Row.Cells(li_columna).Text).Caption
                    End If
                Next
            ElseIf e.Row.RowType = ListItemType.Item Or e.Row.RowType = ListItemType.AlternatingItem Then
                li_diferencia = e.Row.Cells.Count - ldt_dt.Columns.Count

                For li_columna = li_diferencia To e.Row.Cells.Count - 1
                    ls_columna = ldt_dt.Columns(li_columna - li_diferencia).ColumnName

                    If e.Row.DataItem(ls_columna).GetType Is GetType(Date) Then
                        e.Row.Cells(li_columna).Text = CType(e.Row.DataItem(ls_columna), Date).ToString("dd/MM/yyyy")
                        e.Row.Cells(li_columna).Width = 80
                        e.Row.Cells(li_columna).Style("text-align") = "center"
                    End If
                Next
            End If
        End Sub

Etiquetas: columnas, datagrid, formato, gridview
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 15:21.