2011-12-14 22 views
5

AutoGenerateColumnsをtrueに設定してASP.NET 2.0にGridViewを取得しました。実行時にDataSetにバインドされ、多数のスキーマの可能性があります。可能なスキーマごとにグリッドと列を設定しないでください。GridViewのAutoGenerateColumnsでのデータ書式設定

グリッド内のいくつかの列は、浮動小数点値となることがあります。デフォルトの数値書式が0.345から0.345000に変わったようです。デフォルトの数値書式を変更して、設定された小数点以下を切り捨てる方法はありますか?

答えて

4

あなたは代わりに表示目的のために浮動小数点のスキーマ内の文字列を使用して、手動で書式設定を行い、このようなものでした:

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

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を使用することはできません。 :-( –

+0

更新されたコードを参照してください。 – mellamokb