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



我尽力研究了这个问题,但找不到一个基本的例子。我有一个ASP MVC 3项目与Telerik网格。由于空间限制,轴网的某些列被隐藏。有一个单独的UI元素,应该允许用户为所有列(可见或隐藏)选择筛选值。我知道一定有一种方法可以从客户端的视图之外控制网格的过滤内容-这个telerik帮助页面说明:

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.Goan(_L)。。。

我认为你把两件事搞混了。

网格上有一个属性,称为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");作为一种方法不起作用的原因。

编辑:

客户端过滤只有在您为网格启用了过滤的情况下才有效(另请参阅重要通知下的文档)

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

最新更新