2012-01-31 87 views
1

我正在使用Telerik MVC Grid,并且需要应用下面的过滤规则,但它似乎只适用于前两列,并忽略了其余所有列。在Telerik MVC Grid Filter中应用规则

这里JS代码:(假设电网是$( “#电网”)的数据( “tgrid”))执行console.log(filterText)的

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); 
} 

结果: substringof(Doc_No” (Opriyandi')或子串(Type,'Opriyandi')或者子串(Request_By,'Opriyandi')或者子串(Request_Date,'Opriyandi')或者子串(部门,'Opriyandi')〜或者(描述,'Opriyandi')〜或〜substringof(IT_Support,'Opriyandi')〜或〜substringof(状态,'Opriyandi')

看前后在附件中应用过滤器。

这是一种错误,或者我做错了什么。谢谢。

*使用Telerik MVC 2011.3.1229
*请问我是否需要关于我的问题的其他信息。 :)

附件:
- BeforeApplyingFilter.png
- AfterApplyingFilter

回答

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