2017-07-20 60 views
0

我有一个绑定到对象列表的DataGridView。一个对象的参数是价格这是仙,我想用美元来展示,如果我是写出来,直接我会做到以下几点:格式化datagridview中的绑定数据

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

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

据我可以看到它,我有下列选项:

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

  2. 当datagridview被填充时更改数据,然后在需要时将其更改为原始格式 。

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

回答

1

我没有看到有任何代表用户/用户界面需要的方式表示数据的“viewmodel”的脏。

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类“wrap”它,它将以UI方式表示您的数据。

var data = GetOrderLines(); 
dataGridView.DataSource = data.Select(orderLine => new OrderLineViewModel(orderLine)) 
           .ToList(); 

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