2011-12-14 46 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

相關問題