GridView中的数据格式设置为AutoGenerateColumns为true

Tom*_*ing 5 asp.net gridview

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

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

mel*_*okb 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";
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)