【发布时间】:2017-12-21 14:50:50
【问题描述】:
我已经在我的 MVC 项目中使用 jquery 实现了 kendo UI Grid。我想执行服务器过滤,但我没有将过滤器对象放入我的控制器。我试过下面的代码。
JS代码:
$("#AccountLedgerReport").kendoGrid({
toolbar: ["excel", "pdf"],
excel: {
allPages: true,
filterable: true
},
pdf: {
filterable: true
},
dataSource: {
type: "aspnetmvc-ajax",
serverSorting: true,
serverPaging: true,
serverFiltering: true,
transport: {
read: getActionURL() + "url?site....,
type: "POST",
dataType: "json"
},
pageSize: 50,
schema: {
return data;
},
data: 'data',
total: 'total',
model: {
fields: {
PnrNumber: { type: "string" }
, TransactionId: { type: "number" }
, CreatedByName: { type: "string" }
...
}
},
},
aggregate: [
{ field: "xxx", aggregate: "max" }
]
},
dataBound: onDataBound,
sortable: true,
filterable: true,
columnMenu: true,
filterable: {
mode: "row"
},
pageable: {
refresh: true,
pageSizes: true,
buttonCount: 5,
serverFiltering: true,
pageSizes: 50
},
columns: [
{
field: "x",
title: "x",
format: x,
width: 145,
footerTemplate: 'Total :',
filterable: {
cell: {
showOperators: true
}
},
},...
]
});
然后我想要获取数据的控制器端是:
public JsonResult actionname(int site..., IDictionary<string, string>[] sort, .., IDictionary<string, Tuple<string, string, string>[]> filter)
我面临的挑战是过滤器参数。排序的数据在需要的时候来了,但过滤器的数据没有来。
请求的 URL 如下:
https://localhost/...?site..&sort[0][field]=xx&sort[0][dir]=asc
这是排序完成的时候。
https://localhost/..?site...&filter[logic]=and&filter[filters][0][operator]=eq&filter[filters][0][value]=held&filter[filters][0][field]=xxx
这是过滤器正在进行的时候。
我没有找到我做错的地方。
【问题讨论】:
-
如果将控制器签名更改为
([DataSourceRequest]DataSourceRequest request)会发生什么情况。用于排序、分页、分组等的参数应该在request字段中找到。我还对所有 kendo 数据源请求使用 POST,但您似乎在 URL 上显示参数,这将是获取参数——这可能是问题的一部分。 -
实际上,我认为我必须添加 kendo 的 dll 和其他东西......我想避免......我可以不用 dll 而不是请告诉我
-
@Rush.2707 您是否尝试在我的回答中应用该方法?
标签: javascript jquery asp.net-mvc kendo-grid