我的任务是为Kendo网格创建一个OR过滤器(由另一个开发团队实现,后者已经离开)。基本上,我们有身份证号码。我们可以使用代码(下面)来过滤单个记录或“包含”等等(所有标准选项)。
然而,我们想要的是一个过滤器,用户可以粘贴一串ID号码(如123,456,789之类的东西等 - 可能是数百个),过滤器会把它们搞定。
目前我们的过滤器代码是:
{ field: "id", title: "ID Number",
filterable: {
cell: {
template: function (args) {
args.element.kendoNumericTextBox({
format: "#",
decimals: 0,
spinners: false
});
}
}
}
},
答案 0 :(得分:0)
使用我自己的过滤器对它进行排序,这个过滤器非常复杂并且在很多不同的地方。但是,如果有人发现它有用......
以下是我的js文件:
self.init = function () {
var FilterToUse = new String($("#MyFilter").val());
self.filterIDs = FilterToUse !== "" ? FilterToUse.split(" ").map(Number) : [];
}
self.filterMyFilter = function () {
return new RSVP.Promise(function (resolve, reject) {
var promises = [];
promises.push(self.init());
RSVP.all(promises)
.then(function (posts) {
var selectedIdsToFilter = self.filterIDs.join(",");
$("#MyGrid").data("kendoGrid").dataSource.read({ SelectedIds: selectedIdsToFilter });
});
});
};
先前定义了self.filterID:
self.filterIDs = [];
MyGrid是我的网格,MyFilter是一个输入框,我可以在其中粘贴我的ID(123 456 789等)。
然后我们使用该模块,并确保将其添加到创建该网格的代码中:
string selectedIds = Request.Form["SelectedIds"]; // SelectedIds comes from paste IDs
List<long> selectedIdList = string.IsNullOrWhiteSpace(selectedIds) == false ? selectedIds.Split(',').Select(long.Parse).ToList() : null;
而且,我们可以过滤它......
if (selectedIdList != null)
{
where = where.And(w => selectedIdList.Contains(w.Id));
}