UltraWinGrid,日期过滤器从dd / MM / yyyy

时间:2015-11-17 08:52:54

标签: vb.net infragistics ultrawingrid

我有infragistics2 v10.3。

我有超级网格有两列

|字符串|日期时间|

对于DateTime,我有自定义格式,例如" dd.MM.yyyy HH:mm"系统区域设置具有短日期格式,如" dd-MMM-yy"。

所以网格显示07.02.2013 14:00和用户看到这个。

系统有07年2月7日

当我想用文字" fe"过滤所有列时它还显示了包含07.02.2013的所有行。

在过滤期间,它使用自己的格式并忽略我的自定义在In InitializeLayout事件中,我们已完成以下代码来设置StartDate列的日期格式

e.Layout.Bands(0).Columns("StartDate").Style = Win.UltraWinGrid.ColumnStyle.Date
e.Layout.Bands(0).Columns("StartDate").Format = "dd/MM/yyyy"
e.Layout.Bands(0).Columns("StartDate").ButtonDisplayStyle = UltraWinGrid.ButtonDisplayStyle.Always

此日期字段列过滤器根据打开日历中的本地系统日期格式显示 请建议我在哪里做错了

2 个答案:

答案 0 :(得分:0)

由于您使用字符串列类型来存储日期,我怀疑日期是如何转换的:2015年8月7日被视为8月7日或7月8日?

您正在设置网格的格式,但DropDown中加载的数据可能是数据库中的原始格式。

如果您不想更改日期列的数据类型,我建议您在选择查询中设置DateFormat,如change-data-type-of-data-retrieved-by-select-query)中所示,但要注意转换错误或日期如上所述改变方案

如果您正在使用SQL Server(我不确定其他数据库),您可以在选择查询中使用UDF(用户定义函数),如此example of UDF on TechNet或此post on SO: using-udf-in-select-statement

除非在初始化或进入编辑模式时明确定义,否则不要忘记设置DropDown的格式。

答案 1 :(得分:0)

您需要设置列的MaskInput属性,如下所示:

e.Layout.Bands(0).Columns("StartDate").MaskInput = "dd/mm/yyyy";

请记住,当单元格处于编辑模式时,它使用编辑器显示已编辑的值。因此,当您需要在编辑模式下修复任何内容时,您需要在编辑器中修复它。