数据绑定DataGridView单元格格式Int到月份名称转换

时间:2012-01-23 14:31:03

标签: c# winforms datagridview formatting int

我有一个数据绑定数据网格视图。在其中我有一个具有NULL值和1-12的列。我怎样才能在运行时使datagridview将1转换为1月并将其显示在单元格中?并将NULL转换为另一个预定义的字符串?

我尝试查看单元格格式,将其更改为自定义格式,然后输入“MMM”但它无效并在实际单元格中显示“MMM”。

请帮忙。

编辑:它的winforms c#4.0,该字段绑定到EF中的实体的Int字段。并且不需要文化敏感,英语也不错。

编辑:我试过{0:MMM}它没有用,只是在X为int的单元格中显示{X:MMM}。

一些截图:

format

result

2 个答案:

答案 0 :(得分:4)

如果WinForms试试这个:

使用Column.DefaultCellStyle.Format属性或在designer中设置。

这篇文章应该澄清任何疑问:

Customize format of DateTime string in WPF and WinForm data binding


问题:字符串格式化掩码仅适用于DateTime值。你有int,在这种情况下,我认为你将不得不写一个转换函数...

检查一下:

DataGridView.CellFormatting Event

答案 1 :(得分:1)

最简单的方法是为数据绑定创建一个单独的属性,例如包含所需逻辑的DisplayMonth,然后将单元格绑定到该属性。您使用的是EF生成的课程吗?如果是这样,您可以将此属性添加到分部类以扩展由EF生成的属性。

看起来像是:

public string DisplayMonth
{
  get { return ConvertToString(this.Date); //TODO: create ConvertToString method }
  set { return this.Date = ConvertFromString() //TODO: create ConvertFromString method ; }
}

如上所述,您也可以使用CellFormatting事件,但是在网格中使用此对象时,您需要重新实现它。