【问题标题】:c#, Set datagridview column format after datasource has been setc#, 设置数据源后设置datagridview列格式
【发布时间】:2010-11-23 13:57:03
【问题描述】:

我有一个以编程方式填充的 datagridview,我想知道如何使其中一个列符合指定格式 - “C2”。

这可以在分配数据源后完成吗?

干杯。

【问题讨论】:

    标签: c# datagridview datatable format datasource


    【解决方案1】:
           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";
          }
      

      【讨论】:

        【解决方案3】:

        Rob 的答案是针对 GridView(Web 控件)而不是 DataGridView(winforms 控件)。

        我已将他的答案改编为 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. DataSource 设置在列定义的末尾 - 这是 因为 DataGridView 会在设置数据时自动绑定数据。
        2. 列设置为 DataGridViewTextBoxColumns。这是 在 DataGridView 中显示文本信息的标准方法。如果你使用 DataGridViewColumn 那么它就不知道如何显示数据了。

        【讨论】:

        • 修复:DataGridTextBoxColumn -> DataGridViewTextBoxColumn
        猜你喜欢
        • 2014-01-14
        • 1970-01-01
        • 2013-09-16
        • 2016-11-07
        • 2020-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多