【发布时间】:2018-07-19 02:20:35
【问题描述】:
我在 ASP.Net MVC5 应用程序中使用 Kendo UI Grid 并设置了一个列,以便当您对其进行过滤时,它会查询数据库以获取唯一结果。我这样定义列:
col.Filterable(x => x.Multi(true).Search(true).DataSource(ds => ds.Read(r => r.Action("UniqueColumn", "Workbook").Data("filterUniquenessColumn()").Type(HttpVerbs.Post)).ServerFiltering(true)));
这只会在您第一次访问时调用控制器,因为它已缓存。为了解决这个问题,我订阅了 ColumnMenuInit 事件并添加了以下代码:
var menu = e.container.find(".k-menu").data("kendoMenu");
menu.bind('open', function (ex) {
if ($(ex.item).find('span.k-i-filter').length > 0) {
var filterMultiCheck = e.container.find(".k-filterable").data("kendoFilterMultiCheck");
if (filterMultiCheck) {
if ($('#grid').data('kendoGrid').dataSource.filter() !== undefined) {
var grid = $('#grid').data('kendoGrid');
filterMultiCheck.checkSource.transport.options.read.data.filter = grid.dataSource.filter();
filterMultiCheck.checkSource.options.type = 'aspnetmvc-ajax';
}
filterMultiCheck.checkSource.read();
}
}
});
每次他们去过滤时都会调用控制器(这是我想要的)。我遇到的问题是,在控制器端,我无法获取 [DataSourceRequest] DataSourceRequest 请求的 Filters 值,以使用应用于主网格的过滤器进行填充。过滤器的结果始终为空。这是我的控制器方法的样子:
public ActionResult UniqueColumn([DataSourceRequest] DataSourceRequest request)
有谁知道如何获取要填充的请求的过滤器属性?我在网络上进行了跟踪,并通过 url 传递了以下内容:
过滤器%5B过滤器%5D%5B0%5D%5B字段%5D:PCode 过滤器%5B过滤器%5D%5B0%5D%5B操作员%5D: eq 过滤器%5B过滤器%5D%5B0%5D%5B值%5D: 00090h4210 过滤器%5Blogic%5D:和
如果有人能告诉我如何在控制器上获取过滤器,将不胜感激。
提前致谢。
【问题讨论】:
标签: jquery asp.net-mvc kendo-grid kendo-asp.net-mvc