Formatting Data in a GridView with AutoGenerateColumns true

I have GridViewin ASP.NET 2.0 with AutoGenerateColumnsset to true. It will be associated at runtime with DataSetone of many possible schemes, and I would prefer not to create grids and columns for each possible scheme.

Some of the columns in the grid will sometimes be floating point values. It looks like the default number formatting is 0.345 to 0.345000. Is there a way to change the default number format so that it trims a given number of decimal places?

+5
source share
1 answer

, - :

EDIT. 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";

#, 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()
+4

All Articles