将 Kendo 网格工具栏搜索应用于日期的模板值
Applying the Kendo Grid toolbar Search to the template value of a date
我在 JQuery Kendo 网格中添加了一个搜索工具栏。我想用它来搜索出现在我的网格中的日期。
日期是从控制器获取的 c# DateTime 值。我使用模板以我需要的格式显示日期。
在我应用模板格式之前,搜索工具栏似乎正在以日期格式进行搜索。
例如,我的日期显示为 10/07/2020
,但如果我搜索该字符串,则不会出现任何内容。
如果我搜索:Fri Jul 10 2020 00:00:00 GMT+0800 (W. Australia Standard Time)
,它将 return 10/07/2020
行。
//my grid datasource
var robotDataSource = new kendo.data.DataSource({
transport: {
read: {
url: "@Url.Action("RobotList", "Robot")",
dataType: "json",
type: "POST"
}
},
schema: {
model: {
fields: {
ID: { type: 'number' },
RobotName: { type: 'string' },
CreatedDate: { type: 'date' }
}
},
},
pageSize: 10,
sort: {
field: "ID",
dir: "desc"
}
});
robotDataSource.fetch(function() {
});
//my grid
$("#robotGrid").kendoGrid({
dataSource: robotDataSource,
height: 700,
toolbar: ["search"],
pageable: {
pageSizes: [10, 25, 50, 100]
},
sortable: true,
filterable: true,
columns: [
{
field: "ID",
title: "ID",
filterable: { search: true }
}, {
field: "RobotName",
title: "Name",
width: 160,
}, {
field: "CreatedDate",
title: "Date Created",
width: 160,
template: "#= (CreatedDate == null)? '' : kendo.toString(kendo.parseDate(CreatedDate, 'yyyy-MM-dd'), 'dd/MM/yyyy') #"
filterable: { multi: true, search: true }
}
]
});
将创建日期的字符串格式版本添加到您的数据源,并像这样添加解析函数:
schema: {
model: {
fields: {
ID: { type: 'number' },
RobotName: { type: 'string' },
CreatedDate: { type: 'date' },
CreatedDateFormatted: { type: 'string' }
}
},
parse: function (response) {
for (var i = 0; i < response.length; i++) {
response[i].CreatedDateFormatted = kendo.format("{0:dd/MM/yyyy}", response[i].CreatedDate);
}
return response;
}
},
然后更新您的网格配置以指示要包含在搜索中的列:
search: {
fields: ["Id", "CreatedDateFormatted"]
},
可在此处获取更多信息:https://docs.telerik.com/kendo-ui/knowledge-base/grid-filter-columns-by-date-via-search-panel
我在 JQuery Kendo 网格中添加了一个搜索工具栏。我想用它来搜索出现在我的网格中的日期。
日期是从控制器获取的 c# DateTime 值。我使用模板以我需要的格式显示日期。
在我应用模板格式之前,搜索工具栏似乎正在以日期格式进行搜索。
例如,我的日期显示为 10/07/2020
,但如果我搜索该字符串,则不会出现任何内容。
如果我搜索:Fri Jul 10 2020 00:00:00 GMT+0800 (W. Australia Standard Time)
,它将 return 10/07/2020
行。
//my grid datasource
var robotDataSource = new kendo.data.DataSource({
transport: {
read: {
url: "@Url.Action("RobotList", "Robot")",
dataType: "json",
type: "POST"
}
},
schema: {
model: {
fields: {
ID: { type: 'number' },
RobotName: { type: 'string' },
CreatedDate: { type: 'date' }
}
},
},
pageSize: 10,
sort: {
field: "ID",
dir: "desc"
}
});
robotDataSource.fetch(function() {
});
//my grid
$("#robotGrid").kendoGrid({
dataSource: robotDataSource,
height: 700,
toolbar: ["search"],
pageable: {
pageSizes: [10, 25, 50, 100]
},
sortable: true,
filterable: true,
columns: [
{
field: "ID",
title: "ID",
filterable: { search: true }
}, {
field: "RobotName",
title: "Name",
width: 160,
}, {
field: "CreatedDate",
title: "Date Created",
width: 160,
template: "#= (CreatedDate == null)? '' : kendo.toString(kendo.parseDate(CreatedDate, 'yyyy-MM-dd'), 'dd/MM/yyyy') #"
filterable: { multi: true, search: true }
}
]
});
将创建日期的字符串格式版本添加到您的数据源,并像这样添加解析函数:
schema: {
model: {
fields: {
ID: { type: 'number' },
RobotName: { type: 'string' },
CreatedDate: { type: 'date' },
CreatedDateFormatted: { type: 'string' }
}
},
parse: function (response) {
for (var i = 0; i < response.length; i++) {
response[i].CreatedDateFormatted = kendo.format("{0:dd/MM/yyyy}", response[i].CreatedDate);
}
return response;
}
},
然后更新您的网格配置以指示要包含在搜索中的列:
search: {
fields: ["Id", "CreatedDateFormatted"]
},
可在此处获取更多信息:https://docs.telerik.com/kendo-ui/knowledge-base/grid-filter-columns-by-date-via-search-panel