2012-01-31 60 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