2011-12-14 32 views
5

Tôi đã có một GridView trong ASP.NET 2.0 với AutoGenerateColumns được đặt thành true. Nó sẽ bị ràng buộc trong thời gian chạy đến một DataSet với một trong nhiều lược đồ có thể, và tôi không muốn thiết lập lưới và cột cho mỗi lược đồ có thể.Định dạng dữ liệu trong GridView với AutoGenerateColumns true

Một số cột trong lưới đôi khi sẽ là các giá trị dấu phẩy động. Có vẻ như định dạng số mặc định biến 0.345 thành 0.345000. Có cách nào để thay đổi định dạng số mặc định để định dạng số thập phân không?

Trả lời

4

Bạn có thể sử dụng chuỗi trong schema của bạn thay vì dấu chấm động cho mục đích hiển thị, và thực hiện các định dạng bằng tay, một cái gì đó như thế này:

EDIT: Nếu không có LINQ, bạn có thể làm điều tương tự bằng cách thay đổi hàng trong schema:

// 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#, giải pháp LINQ-Based:

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

Câu hỏi được đưa ra một cách sai lầm ASP.NET 4.0. Tôi đang trên 2,0 (câu hỏi được cập nhật), vì vậy tôi không thể sử dụng LINQ. :-( –

+0

Xem mã được cập nhật. – mellamokb

Các vấn đề liên quan