2009-08-27 8 views

答えて

3
 var persons = new[] {new {name = "aaa", salary = 40000}, 
        new {name = "aaa", salary = 40000}, 
        new {name = "aaa", salary = 40000}, 
        new {name = "aaa", salary = 40000}}; 


    GridView1.DataSource = persons; 
    GridView1.AutoGenerateColumns = false; 

    var NameField = new BoundField(); 

    NameField.HeaderText = "Name"; 
    NameField.DataField = "name"; 
    GridView1.Columns.Add(NameField); 

    var SalaryField = new BoundField(); 
    SalaryField.HeaderText = "Salary"; 
    SalaryField.DataField = "salary"; 
    SalaryField.DataFormatString = "{0:c2}"; 
    SalaryField.HtmlEncode = false; 
    GridView1.Columns.Add(SalaryField); 


    GridView1.DataBind(); 
2

またgrid_ColumnAddedイベントハンドラそのようなでそれを行うことができます。

if (e.Column.HeaderText == "YourColumnHeaderText") 
    { 
    e.Column.DefaultCellStyle.Format = "C2"; 
    } 
2

ロブの答えは、GridViewの(Webコントロール)ではないのDataGridView(リサイズ制御)のためです。

私はwinformsに彼の答えを適応させました。

var persons = new[] {new {name = "aaa", salary = 40000}, 
       new {name = "aaa", salary = 40000}, 
       new {name = "aaa", salary = 40000}, 
       new {name = "aaa", salary = 40000}}; 

DataGridView1.AutoGenerateColumns = false; 

var NameField = new DataGridTextBoxColumn(); 

NameField.HeaderText = "Name"; 
NameField.DataPropertyName = "name"; 
DataGridView1.Columns.Add(NameField); 

var SalaryField = new DataGridViewTextBoxColumn(); 
SalaryField.HeaderText = "Salary"; 
SalaryField.DataPropertyName = "salary"; 
SalaryField.DefaultCellStyle.Format = "{0:c2}"; 
DataGridView1.Columns.Add(SalaryField); 

DataGridView1.DataSource = persons; 

物事は注意する:

  1. データソースは、列定義の最後に設定されている - DataGridViewのは、それがデータの自動データバインドが設定されますので、これは です。
  2. 列がDataGridViewTextBoxColumnsに設定されています。これは、DataGridViewにテキスト情報を表示する標準的な方法です( )。 DataGridViewColumnを使用すると、データの表示方法がわかりません。
+0

修正:DataGridTextBoxColumn - > DataGridViewTextBoxColumn –