【问题标题】:Formatting bound data in datagridview在 datagridview 中格式化绑定数据
【发布时间】:2017-12-26 12:18:12
【问题描述】:

我有一个绑定到对象列表的 DataGridView。对象的参数之一是以美分为单位的价格,我想以美元显示,如果我要直接写出来,我会执行以下操作:

row.Cells[5].Value = String.Format("€ {0:0.00}", oStockData.netPriceCents / 100);

我可以在之后检查数据,但不能将新的格式化字符串提交到绑定对象,因此只需要以另一种格式显示数据。

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

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

  2. 填充datagridview时更改数据,然后更改 需要时恢复为原始格式。

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

【问题讨论】:

    标签: c# datagridview binding


    【解决方案1】:

    我认为拥有以用户/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();
    

    格式“€0.00”可以在datagridview的列设置中设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多