我正在使用Telerik MVC Grid,并且需要在下面应用过滤规则,但它似乎只适用于前两列,并忽略所有其余列。
这里JS代码:(假设网格是$(“#grid”)。data(“tgrid”))
function extTelerikGridFilter(grid, value) {
if (!$.isArray(grid.columns)) throw "Error : First Parameter accept only array.";
var colLength = grid.columns.length - 1;
var filterText = "";
var tempArr = new Array();
for (var i = 0; i < grid.columns.length; i++) {
filterText = filterText + "substringof({0},'{1}')".replace("{0}", grid.columns[i].member).replace("{1}", value);
if (colLength > 0) {
filterText = filterText + "~or~";
colLength = colLength - 1;
}
}
console.log(filterText);
grid.filter(filterText);
}
console.log(filterText)的结果: 的 substringof(Doc_No, 'Opriyandi')〜或〜substringof(类型, 'Opriyandi')〜或〜substringof(Request_By, 'Opriyandi')〜或〜substringof(REQUEST_DATE, 'Opriyandi')〜或〜substringof(部门, 'Opriyandi')〜或〜substringof(植物, 'Opriyandi')〜或〜substringof(描述, 'Opriyandi')〜或〜substringof(IT_Support, 'Opriyandi')〜或〜substringof(状态,” Opriyandi')
在附件中应用过滤器之前和之后查看。
这是某种错误还是我做错了什么..谢谢。
*使用Telerik MVC 2011.3.1229
*如果您需要有关我的问题的其他信息,请询问我。 :)
答案 0 :(得分:1)
我也有这个问题。经过一些实验,我发现我们应该从头部开始包括每个表达式。
因此,您的过滤字符串将如下所示:
(((((((((substringof(Doc_No,'Opriyandi'))~or~substringof(Type,'Opriyandi'))~or~substringof(Request_By,'Opriyandi'))~or~substringof(Request_Date,'Opriyandi'))~or~substringof(Department,'Opriyandi'))~or~substringof(Plant,'Opriyandi'))~or~substringof(Description,'Opriyandi'))~or~substringof(IT_Support,'Opriyandi'))~or~substringof(Status,'Opriyandi'))
您可以修改代码:
..
for (var i = 0; i < grid.columns.length; i++) {
--> filterText = "(" + filterText + "substringof({0},'{1}')".replace("{0}", grid.columns[i].member).replace("{1}", value) + ")"; <--
if (colLength > 0) {
filterText = filterText + "~or~";
colLength = colLength - 1;
}
..
PS我正在使用2011.3.1306
PS2 我写了关于自定义过滤的文章 - 请参阅link。