希望有人可以帮助您解决问题。我有一个项目,用户必须能够设置日期格式,以了解他在jqGrid(我最近开始学习)中如何看待日期,并且还必须实现工具栏搜索。现在我有这个:
{
name: 'DueDate',
formatter: "date",
formatoptions: {
srcformat: 'd.m.Y',
newformat: gridOptions.dateFormat, // setting date format
},
sorttype: 'date',
searchoptions: {
sopt: ['eq'],
dataInit: function (e) {
//setting jquery-ui extension: multi-datepicker
}
}
},
问题在于,可能的格式选择之一必须是j.F
,其中系统仅显示日期和完整的月份名称,而不显示年份。当日期格式设置为这种特定格式时,即使我知道存在这样的日期,也无法在工具栏搜索中找到它。格式化本身可以很好地工作,因为搜索日期会引起问题。即使使用此格式(实际上是任何格式)在工具栏字段中输入日期,也不会显示任何结果。我可以通过将其设置newformat
为其他任何格式来添加它,工具栏搜索可以,但是不可以j.F
系统使用jqGrid JS-v5.2.1
PS我想知道是否可以d.m.Y
在显示时使用格式进行过滤j.F
问题:当日期从srcformat格式化为newformat时,将根据规则削减一年。当输入仅包含月份和日期的搜索日期时,将缺少年份,并且将对原始数据进行搜索而没有年份(因为转换为原始日期)。这会导致错误的搜索结果。例如,如果您输入4.July作为搜索字符串,则根据规则,此字符串将转换为4.7.1970,并且搜索到该日期为止,这将无法获得预期的结果。
解决方案:一种可能的解决方案是定义一个包含格式化数据的虚拟字段,并且在执行搜索时,不应将其应用于实际日期字段,而应将其应用于新构建的虚拟字段。下面是代码:
{
name: 'DueDate',
index : 'mydate',
formatter: "date",
formatoptions: {
srcformat: 'd.m.Y',
newformat: gridOptions.dateFormat, // setting date format
},
sorttype: 'date',
searchoptions: {
sopt: ['eq'],
dataInit: function (e) {
//setting jquery-ui extension: multi-datepicker
}
}
},
{
name : 'mydate',
hidden: true,
jsonmap : function(item) {
return $.jgrid.parseDate.call($("#jqGrid")[0] , 'd.m.Y', item.DueDate , 'j.F');
}
},
注意DueDate中的index属性。#jqGrid是mydate虚拟字段中jsonmap中定义的网格的ID
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句