【问题标题】:jqGrid date sort (local) doesn't workjqGrid 日期排序(本地)不起作用
【发布时间】:2013-06-21 14:52:10
【问题描述】:

我知道这里有很多此类问题的答案,但它们似乎都有一些独特的情况。然而,就我而言,这应该是一件非常简单的事情,因为我没有对日期做任何奇怪的事情,但我无法让日期排序工作。

这是我从 JSON 获得的数据(部分编辑,因为这是一个公司项目)。

{"rows": [
    {"cell": [ "140935", ..., "19/06/2013 3:17:02 PM", ... ]},
    {"cell": [ "140894", ..., "19/06/2013 10:01:57 AM", ... ]},
    {"cell": [ "140803", ..., "18/06/2013 11:50:01 AM", ... ]},
    {"cell": [ "140008", ..., "10/06/2013 12:44:44 PM", ... ]},
    {"cell": [ "138280", ..., "28/05/2013 11:57:19 AM", ... ]},
    {"cell": [ "118286", ..., "15/11/2012 7:13:19 PM", ... ]}
]}

如您所见,当我从服务器获取它时,它已经排序。麻烦的是,当我在表格中使用排序时,它会搞砸,并且 28/5/2013 日期会比六月日期“晚”。这是屏幕截图。

这是我用来生成它的 jqGrid 代码(为简洁起见,我对其进行了部分编辑,但我认为我没有删除任何会影响此问题的内容)。

我首先将列名和列模型设置为变量以保持整洁。

cnames = ['ID', _company, _location, ... _createdon..],
cmodel = [
    { name:'ticketId', index:'ticketId', key:true, width:60, align:'center',
        sorttype:'int', fixed:true, resizable:false, editrules:{ edithidden:true }
    },
    { name:'company', index:'company', width:117, editrules:{edithidden:true} },
    { name:'location', index:'location', width:94, editrules:{edithidden:true} },
    ...
    { name:'CreatedOn', index:'CreatedOn', width:85, sorttype:'date',
        datefmt:'m/d/Y h:i:s A', fixed:true, editrules:{edithidden:true, date:true} },
    ...
]

所以日期格式m/d/Y h:i:s A 与我从服务器15/11/2012 7:13:19 PM 获得的日期数据相匹配。

然后我像这样加载 jqGrid

ticketsTable = tableWrap.jqGrid({
    url:            urlTicketHandler + '?method=GetTickets&' + filtersData,
    mtype:          'GET',
    datatype:       'json',
    colNames:       cnames,
    colModel:       cmodel,
    height:         'auto',
    rowNum:         1000,
    autowidth:      true,
    sortname:       'priority',
    sortorder:      'desc',
    pgbuttons:      false,
    pginput:        false,
    pgtext:         '',
    viewrecords:    true,
    altRows:        true,
    loadonce:       true,
    scrollOffset:   0,
    hidegrid:       false,
    caption:        _tickets,
    toppager:       true,
    pager:          '#ticketsList_footer',
    prmNames:       {page:null, rows:null, search:null},
    viewsortcols:   [true,'vertical',true],
    recordtext:     _showingxt + ' {2} ' + _tickets,
    gridview:       true,
    ignoreCase:     true,
    multiselect:    hasFullAccess,
    loadComplete:   function(d) {
        if (firstLoad) {
            firstLoad = false;
            if (isColState && myColumnsState.permutation.length) {
                $(this).jqGrid("remapColumns", myColumnsState.permutation, true);
            }
        }
        saveColumnState.call($(this), this.p.remapColumns);
    }
});

我认为唯一可能导致任何问题的是列保存部分(我没有在这里包含整个功能,但我不确定它是否真的相关,我从 jqGrid 自己的网站获取)。

我省略了在其他列上执行的一些格式设置,但我没有触及日期列。我还省略了一些向表格添加自定义按钮的功能,但同样,我认为这并不重要。

我在这里遗漏了什么?

【问题讨论】:

    标签: javascript jqgrid date-sorting


    【解决方案1】:

    我已经数不清有多少次我试图弄清楚到底发生了什么。自然,遵守墨菲定律,直到我将它发布到 Stackoverflow 上,我才终于看到了我在编写日期格式时非常简单、非常尴尬的错误。当然,现在它就在那里,在公共场合,在互联网上,永远向所有人展示我的耻辱。没什么好说的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 2019-12-14
      相关资源
      最近更新 更多