DataGridView comboBoxColumn dateTime格式

时间:2014-01-01 16:58:52

标签: c# datagridview string-formatting

Winform,带有comboBox列的dataGridview。列数据源指向Sql表“dateTime”字段格式。每行包含一些数据,如01/01 / 2014,01 / 02/2014等。我正在尝试格式化dataGridView中的comboBox单元格以仅显示月/年。

我直接在设计师中尝试使用自定义格式:

enter image description here

并使用代码:

dataGridView1.Columns["Periodo"].DefaultCellStyle.Format = ("{0:M/yyyy}");

并且喜欢这个

dataGridView1.Columns["Periodo"].DefaultCellStyle.Format = "M/yyyy";

以及许多其他方式。我无法做到正确,comboBox一直显示01/01/2014类型格式。如何格式化此列以获得“2014年1月”,“2014年2月”等。?

1 个答案:

答案 0 :(得分:1)

问题不在于您尝试的格式("M/yyyy"没问题),Format属性中的问题都不起作用。问题是你所做的是影响细胞内容,而不是组合框内容。

避免DataGridViewComboBoxColumn / DataGridViewComboBoxCell问题的最佳方法是处理组合框的项目,而不是单元格本身。示例代码:

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.Name = "DateCol";
List<DateTime> dates = new List<DateTime>() { DateTime.Now.AddMonths(-1), DateTime.Now, DateTime.Now.AddMonths(1) };
//Dates = Dates.OrderBy(x => x).ToList();
List<string> colSource = dates.Select(x => x.ToString("M/yyyy")).ToList(); 
col.DataSource = colSource;

dataGridView1.Columns.Add(col);

在此代码中,我正在处理日期列表(并最终订购或执行任何其他必需的操作);但后来我创建了一个(格式正确的)字符串列表作为组合框源。