我有注册表2 v10.3。
我有两列的超网格
|String|DateTime|
对于DateTime,我有像"dd.MM.yyyy HH:MM"这样的自定义格式。系统区域设置有像"dd MMM yy"这样的短日期格式。
所以网格显示2013年2月7日14:00,用户看到这个。
该系统具有2013年2月7日的
当我想用文本"fe"过滤所有列时,它还会显示包含07.02.2013的所有行。
在筛选过程中,它使用自己的格式并忽略我的自定义
在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
此日期字段列筛选器根据打开日历中的本地系统日期格式显示请建议我在哪里做了错误的
由于您使用字符串列类型来存储日期,我怀疑日期是如何转换的:2015年8月7日被视为8月7或7月8日?
您正在设置网格的格式,但DropDown中加载的数据可能是数据库中的原始形式。
如果您不想更改日期列的数据类型,我建议您在选择查询中设置DateFormat,如选择查询检索到的数据的更改数据类型所示(但要注意转换错误或上述日期更改情况)
如果您使用SQL Server(我不确定其他数据库),您可以在选择查询中使用UDF(用户定义函数),如TechNet上的UDF示例或SO上的这篇文章:在选择语句中使用UDF
除此之外,如果在初始化或进入编辑模式时明确定义,请不要忘记设置DropDown的格式。
您需要设置列的MaskInput属性,如下所示:
e.Layout.Bands(0).Columns("StartDate").MaskInput = "dd/mm/yyyy";
请记住,当单元格处于编辑模式时,它会使用编辑器来显示编辑后的值。因此,当你需要在编辑模式下修复任何东西时,你需要在编辑器中修复它。