Winform,带有comboBox列的dataGridview。列数据源指向Sql表“dateTime”字段格式。每行包含一些数据,如01/01 / 2014,01 / 02/2014等。我正在尝试格式化dataGridView中的comboBox单元格以仅显示月/年。
我直接在设计师中尝试使用自定义格式:
并使用代码:
dataGridView1.Columns["Periodo"].DefaultCellStyle.Format = ("{0:M/yyyy}");
并且喜欢这个
dataGridView1.Columns["Periodo"].DefaultCellStyle.Format = "M/yyyy";
以及许多其他方式。我无法做到正确,comboBox一直显示01/01/2014类型格式。如何格式化此列以获得“2014年1月”,“2014年2月”等。?
答案 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);
在此代码中,我正在处理日期列表(并最终订购或执行任何其他必需的操作);但后来我创建了一个(格式正确的)字符串列表作为组合框源。