我们使用带时间的 DateTime 列,但需要(excel 样式的不同元素)列过滤器来仅显示日期,而不显示时间。那可能吗?
我在 Infragistics 上找到了一篇文章,其中描述了如何添加自定义过滤器,但没有描述如何更改现有过滤器。
从基础设施支持中截取了以下代码(感谢 Tacho!):
private void XamDataGrid_RecordFilterDropDownOpening(object sender, RecordFilterDropDownOpeningEventArgs e)
{
if (e.Field.DataType == typeof(DateTime))
{
List<FilterDropDownItem> cellValues = e.DropDownItems.Where(i => i.IsCellValue).ToList();
foreach (FilterDropDownItem item in cellValues)
e.DropDownItems.Remove(item);
foreach (FilterDropDownItem item in cellValues)
{
item.DisplayText = (item.Value as DateTime?).Value.ToString("yyyy/MM/dd");
if (!e.DropDownItems.Contains(e.DropDownItems.FirstOrDefault(i => i.DisplayText == item.DisplayText)))
{
var newItem = new FilterDropDownItem(new Infragistics.Windows.Controls.ComparisonCondition(
Infragistics.Windows.Controls.ComparisonOperator.Contains, item.DisplayText), item.DisplayText);
e.DropDownItems.Add(newItem);
}
}
}
}