【问题标题】:Data formatting in GridView with AutoGenerateColumns trueGridView 中的数据格式化与 AutoGenerateColumns true
【发布时间】:2011-12-14 18:41:59
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    您可以在架构中使用字符串而不是浮点来进行显示,并手动执行格式化,如下所示:

    编辑:没有 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()
    

    【讨论】:

    • 问题错误地表述为 ASP.NET 4.0。我在 2.0(问题更新),所以我不能使用 LINQ。 :-(
    猜你喜欢
    • 1970-01-01
    • 2015-08-18
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2013-11-27
    • 2015-12-18
    • 2018-12-03
    相关资源
    最近更新 更多