希望有人可以帮助解决问题。我有一个项目,用户必须能够设置日期格式,看他是如何看到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
P.S。我想知道是否可以使用d.m.Y
格式进行过滤,同时显示j.F
答案 0 :(得分:0)
问题:当日期从srcformat格式化为newformat时,将根据规则剪切一年。如果输入的搜索日期仅包含月份和日期,则缺少年份,并且对原始数据执行搜索而不使用年份(从转换为原始日期)。这会导致错误的搜索结果。例如,如果您输入4.July作为搜索字符串,然后根据规则将此字符串转换为4.7.1970并执行搜索到此日期,这将得不到所需的结果。
解决方案:一种可能的解决方案是定义一个包含格式化数据的虚拟字段,并且在执行搜索时,应该应用的不是实际日期字段,而是应用于新构建 - ed虚拟领域。以下是代码:
{
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