Telerik MVC扩展网格:如何让filterBy JavaScript工作?

时间:2012-03-24 04:27:04

标签: asp.net-mvc-3 telerik telerik-grid telerik-mvc

试图尽我所能地研究这个,但找不到一个基本的例子。我有一个带有Telerik Grid的ASP MVC 3项目。由于空间限制,网格的某些列被隐藏。有一个单独的UI元素应允许用户为所有列(可见或隐藏)选择过滤器值。我知道必须有一种方法可以从客户端的View外部控制网格的过滤内容 - this telerik help page状态:

  

filterBy:

     

返回网格的当前过滤器表达式。初始值为“”(空字符串)。检查过滤器JavaScript方法以获取其他参考。

但是我找不到额外的参考。从我可以从网上收集到的东西,我应该做这样的事情:

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

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

但是当它尝试执行时,我收到以下JavaScript错误:

  

grid.filterBy不是函数

我做错了什么?有人能指出我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。呻吟......

1 个答案:

答案 0 :(得分: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())