C# 在datagridview中格式化绑定数据

C# 在datagridview中格式化绑定数据,c#,datagridview,binding,C#,Datagridview,Binding,我有一个绑定到对象列表的DataGridView。对象的一个参数是以美分为单位的价格,我想用美元表示,若我直接写出来,我会做以下操作: row.Cells[5].Value = String.Format("€ {0:0.00}", oStockData.netPriceCents / 100); 之后我可以检查数据,但无法将新的格式化字符串提交到绑定对象,因此只需要以其他格式显示数据 就我所知,我有以下选择: 将实际基础数据保存在不可浏览的参数中并创建 另一个可以更改为所需格式并显示给 用户

我有一个绑定到对象列表的DataGridView。对象的一个参数是以美分为单位的价格,我想用美元表示,若我直接写出来,我会做以下操作:

row.Cells[5].Value = String.Format("€ {0:0.00}", oStockData.netPriceCents / 100);
之后我可以检查数据,但无法将新的格式化字符串提交到绑定对象,因此只需要以其他格式显示数据

就我所知,我有以下选择:

  • 将实际基础数据保存在不可浏览的参数中并创建 另一个可以更改为所需格式并显示给 用户

  • 在填充datagridview时更改数据,然后更改它 需要时返回原始格式


  • 有没有更好的方法,因为上面的2个对我来说似乎很脏。

    我看不出“viewmodel”以用户/UI需要的方式表示数据有什么不好的地方

    public class OrderLineViewModel
    {
        private OrderLine _model;
    
        public OrderLineViewModel(OrderLine model)
        {
            _model = model;
        }
    
        public decimal Price
        {
            get
            {
                return _model.Price/100.0m;
            }
            set
            {
                _model.Price = value * 100.0m;
            }
        }
    }
    
    然后,您可以检索数据并使用viewmodel类“包装”它,该类将以UI方式表示您的数据

    var data = GetOrderLines();
    dataGridView.DataSource = data.Select(orderLine => new OrderLineViewModel(orderLine))
                                  .ToList();
    
    可以在datagridview的列设置中设置格式“€0.00”