jqGrid使用工具栏

时间:2018-01-31 17:23:25

标签: javascript jqgrid

希望有人可以帮助解决问题。我有一个项目,用户必须能够设置日期格式,看他是如何看到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

1 个答案:

答案 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