Sorting 剑道网格日期筛选器在前后不工作
我用剑道网格来显示数据。当我在指定日期值(等于)的日期字段上进行筛选时,它可以正常工作。但是当我在过滤器中使用before或after条件时,它会错误地过滤数据 此外,日期字段上的排序也不能正确排序。任何帮助都将不胜感激。仅供参考:我使用moment.js将数据格式化为dd/mm/yyyy格式 以下是包含数据的代码段: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: [
$("#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}});} }}
我认为向其他人强调这一点可能有用。目前,这可能不再是您的问题。将来,如果您指定预期的内容,这将有所帮助。例如,当您说排序不起作用时,如果您指定排序顺序应该是什么以及实际是什么,这将有所帮助。