2012-03-24 65 views
1

試圖研究這個盡我所能,但找不到一個基本的例子。我有一個Telerik Grid的ASP MVC 3項目。由於空間限制,網格中的某些列是隱藏的。有一個單獨的UI元素,應該允許用戶爲所有列選擇過濾器值,可見或隱藏。我知道必須有一種方法來控制電網的從客戶端上查看外面的過濾內容 - this telerik help page規定:Telerik MVC擴展網格:如何讓filterBy JavaScript工作?

filterBy:

Returns the current filter expression of the grid. The initial value is "" (empty string). Check the filter JavaScript method for additional reference.

但我不能找到更多的參考。從我可以從網上搜集我應該做這樣的事情:

var grid = $("#Grid").data("tGrid"); 

grid.filter("OrderID~eq~10248"); 

但是,當它試圖執行我得到以下JavaScript錯誤:

grid.filterBy is not a function

我在做什麼錯?有人可以指點我的filterBy方法的細節嗎?

編輯:

我改變了我的代碼:

$("#btnFilter").click(function (e) { 
    var grid = $("#Grid").data("tGrid"); 
    grid.filter("Off_Plan~eq~'No Funds'"); 
}); 

仍然得到同樣的錯誤類型: grid.filter不是一個函數

很顯然,我是新手,在Telerik的。似乎我缺少一些telerik JavaScript文件...?我開始這個Visual Studio項目作爲一個新的Telerik MVC應用程序。腳本註冊商在那裏,我已經添加了 到_Layout.cshtml。 Groan ...

回答

4

我認爲你在混合兩件事。

有一個財產在網格上調用filterBy它獲得實際的過濾器。
並且對稱爲filter網格其過濾基於與所述給定的過濾器表達式網格中的方法

下面是一些代碼:

var grid = $("#Grid").data("tGrid"); 

var currentFilter = grid.filterBy; //it will be "" 

grid.filter("OrderID~eq~10248"); // filtering the grid with OrderID equals 10248 

currentFilter = grid.filterBy // now it will return "OrderID~eq~10248" 

所以這就是爲什麼grid.filterBy("OrderID~eq~10248");的方法是行不通的。

編輯:

如果您啓用過濾網格(另見文檔Important notice下)過濾客戶端只工作

@(Html.Telerik().Grid(Model) 
    .Name("Grid") 
    .Filterable()) 
+0

我想你的解決方案;看到我的編輯原始帖子。仍然失敗,相同的評論... grid.filter不是一個功能 – rgwozdz 2012-03-27 17:40:15

+0

當網格不可過濾時,我能夠重新報告你的問題。看到我更新的答案。如果它不能解決您的問題,請發佈您的網格構建代碼。 – nemesv 2012-03-27 18:10:44

+0

它做到了。謝謝。 – rgwozdz 2012-03-27 20:01:25