Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 剑道网格日期筛选器在前后不工作_Sorting_Date_Filter_Kendo Ui_Grid - Fatal编程技术网

Sorting 剑道网格日期筛选器在前后不工作

Sorting 剑道网格日期筛选器在前后不工作,sorting,date,filter,kendo-ui,grid,Sorting,Date,Filter,Kendo Ui,Grid,我用剑道网格来显示数据。当我在指定日期值(等于)的日期字段上进行筛选时,它可以正常工作。但是当我在过滤器中使用before或after条件时,它会错误地过滤数据 此外,日期字段上的排序也不能正确排序。任何帮助都将不胜感激。仅供参考:我使用moment.js将数据格式化为dd/mm/yyyy格式 以下是包含数据的代码段: $("#testgrid").kendoGrid({ change:onChange, dataSource: { data: [

我用剑道网格来显示数据。当我在指定日期值(等于)的日期字段上进行筛选时,它可以正常工作。但是当我在过滤器中使用before或after条件时,它会错误地过滤数据

此外,日期字段上的排序也不能正确排序。任何帮助都将不胜感激。仅供参考:我使用moment.js将数据格式化为dd/mm/yyyy格式

以下是包含数据的代码段:

$("#testgrid").kendoGrid({
    change:onChange,
    dataSource: {
        data: [
            {"No":"27691","ClientName":"ABC","ExpiryDate":"2015-03-14T00:00:00Z"},
            {"No":"27691","Name":"DEF","ExpiryDate":"2016-03-22T00:00:00Z"},
            {"No":"27691","Name":"ABC","ExpiryDate":"2015-02-28T00:00:00Z"},
            {"No":"27691","Name":"ABC","ExpiryDate":"2011-07-03T00:00:00Z"},
            {"No":"27691","Name":"ABC","ExpiryDate":"2015-07-31T00:00:00Z"},
            {"No":"27691","Name":"ABC","ExpiryDate":null},
            {"No":"27691","Name":"ABC","ExpiryDate":"2012-04-30T00:00:00Z"}
        ],
        schema: {
            model: {
                fields: {
                    No: { type: "string" },
                    ExpiryDate: {
                        type: "date",
                        parse: function(inputdate) {
                            var dtval = moment(inputdate).format('DD/MM/YYYY');

                            if (dtval == "Invalid date")
                                return "";
                            else  return dtval;}
                        },
                        Name: { type: "string" }
                    }
                }
            },
            pageSize: 20
        },
        height: 550,
        selectable: "single row",
        allowCopy: true,
        resizable: true,
        groupable: true,
        sortable: true,
        filterable: {
            mode: 'row',
            extra: false,
            operators: {
                string: {
                    startswith: "Starts with",
                    eq: "Is equal to",
                    neq: "Is not equal to"
                }
            }
        },
        pageable: true,
        columns: [
            { field: "No", title: "Number", filterable: { cell: { showOperators: true, operator: "contains" } } , width: 150 },
                    { field: "Name", title: "Name",  filterable: { cell: { showOperators: true} }, width: 150 },                         
                    { field: "ExpiryDate", title: "Expiry Date",
                      format: "{0:dd/MM/yyyy}",   filterable: {
                                cell: {
                                    template: function (args) {
                                    args.element.kendoDatePicker({
                                    format: "{0:dd/MM/yyyy}"
                                        });
                                    }
                                }}
                    , width: 150 }
                   ]
                });`

删除模式中的
parse
设置可能会解决排序问题。在过滤上,可能“问题”是您的日期是UTC,但剑道会在浏览器的本地时间显示日期,您需要处理时间

我在美国中央夏令时(CDT),因此
2015-03-14T00:00:00Z
在网格中显示为
13/03/2015
。如果我使用带有
13/03/2015
的“equals”过滤器,那么我在网格中不会得到任何结果。同样的事情-没有结果-使用
14/03/2015
。如果我将datepicker模板格式更改为
dd/MM/yyyy HH:MM:ss
,并按等于
13/03/2015 19:00:00
进行过滤,那么我将获得预期的条目

因此,为了使用“equals”,您必须有(a)时间成分和(b)记住本地到UTC的转换


中演示有趣的是,我一直在努力解决一个与过滤器字段本身相关的问题;我无法更改日期的格式

“ExpiryDate”字段的代码部分帮助解决了我的问题

{filterable:{单元格:{模板:函数(args){args.element.kendoDatePicker({格式:{0:dd/MM/yyyy}});} }}


我认为向其他人强调这一点可能有用。

目前,这可能不再是您的问题。将来,如果您指定预期的内容,这将有所帮助。例如,当您说排序不起作用时,如果您指定排序顺序应该是什么以及实际是什么,这将有所帮助。