试图尽我所能地研究这个,但找不到一个基本的例子。我有一个带有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。呻吟......
答案 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())