格式化datagridview中的绑定数据

时间:2017-07-20 16:54:18

标签: c# datagridview binding

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

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

我之后可以查看数据,但无法将新格式化的字符串提交给绑定对象,因此只需要以其他格式显示数据。

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

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

  2. 填充数据网格视图时更改数据,然后进行更改 在需要时回到原始格式。

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

1 个答案:

答案 0 :(得分:1)

我没有看到任何肮脏的“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”。