2011-12-14 64 views
5

我在ASP.NET 2.0中有GridViewAutoGenerateColumns设置为true。它将在运行时绑定到具有许多可能架构之一的DataSet,我宁愿不为每个可能的架构设置网格和列。带有AutoGenerateColumns的GridView中的数据格式设置为true

网格中的某些列有时会是浮点值。似乎默认的数字格式化为0.345到0.345000。有没有办法改变默认的数字格式,以便修整为设定的小数位数?

回答

4

你可以使用模式中的字符串,而不是浮点用于显示目的,并手动进行格式化,这样的事情:

编辑:没有LINQ,你可以通过修改行做同样的事情架构:

// 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#,基于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

该问题错误地声明ASP.NET 4.0。我在2.0(问题更新),所以我不能使用LINQ。 :-( – 2011-12-14 18:47:55

相关问题