2011-12-14 10 views
5

Tengo un GridView en ASP.NET 2.0 con AutoGenerateColumns establecido en verdadero. Se enlazará en tiempo de ejecución a DataSet con uno de muchos esquemas posibles, y prefiero no configurar grillas y columnas para cada posible esquema.Formateo de datos en GridView con AutoGenerateColumns true

Algunas de las columnas de la cuadrícula a veces serán valores de coma flotante. Parece que el formato de número predeterminado convierte 0.345 en 0.345000. ¿Hay alguna forma de cambiar el formato de número predeterminado para que se ajuste a un número determinado de decimales?

Respuesta

4

Se puede usar cadenas en su esquema en lugar de coma flotante con fines de exhibición, y realizar manualmente el formato, algo como esto:

EDITAR: Sin LINQ, puede hacer lo mismo mediante la modificación de las filas de el esquema:

// load source data 
DataSet myData = GetDataSet(); 

// create column for formatted data. 
myData.Tables["MyTable"].Columns.Add("AmountFormatted", typeof(string)); 

// apply formatting 
foreach (DataRow dr in myData.Tables["MyTable"].Rows) 
    dr["AmountFormatted"] = string.Format("{0:0.###}", dr["Amount"]); 

// remove source column and replace with formatted column 
myData.Tables["MyTable"].Columns.Remove("Amount"); 
myData.Tables["MyTable"].Columns["AmountFormatted"].ColumnName = "Amount"; 

C#, solución basada en LINQ:

var theData = GetDataSchema1(); 
var dataSource = theData.Tables["MyTable"].Select().Select(dr => 
    new { /* select only columns you want displayed, and apply formatting */ 
     MyColumn1 = dr["MyColumn1"], 
     MyColumn2 = dr["MyColumn2"], 
     MyColumn3 = String.format("#.###", dr["MyColumn3"]), 
     MyColumn4 = dr["MyColumn4"], 
     MyColumn5 = dr["MyColumn5"] 
    } 
); 
MyGridView1.DataSource = dataSource; 
MyGridView1.DataBind() 
+0

La pregunta erróneamente declaró ASP.NET 4.0. Estoy en 2.0 (pregunta actualizada), así que no puedo usar LINQ. :-( –

+0

Ver código actualizado. – mellamokb

Cuestiones relacionadas