我有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
此日期字段列过滤器根据打开日历中的本地系统日期格式显示。 请建议我在哪里做错了
答案 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";
请记住,当单元格处于编辑模式时,它使用编辑器显示已编辑的值。因此,当您需要在编辑模式下修复任何内容时,您需要在编辑器中修复它。