我正在尝试为不属于Kendo UI Grid控件的按钮创建单击事件。
使用以下代码可以轻松完成此操作:https://stackoverflow.com/a/20973015/60629
使用DataSourceRequest代码:
的JavaScript
$("#excel").kendoButton({
click: function (event) {
var grid = $('#grid_patients').data('kendoGrid');
var parameterMap = grid.dataSource.transport.parameterMap;
var sortData = grid.dataSource.sort();
var filterData = grid.dataSource.filter();
var groupData = grid.dataSource.group();
var prepared = parameterMap({ sort: sortData, filter: filterData, group: groupData });
$.post("/Root/Getresults", prepared,
function (data, status, xhr) {
console.log("Ok!");
}
);
}
});
控制器代码
public ActionResult Getresults([DataSourceRequest]DataSourceRequest request)
{
...
其他数据
但是,我还需要传递其他参数。 JavaScript更改
var extraParams = { /* appended data object */
request: prepared,
additionaldata: "test"
};
$.post("/Root/Getresults", extraParams,
...
控制器
public ActionResult Getresults([DataSourceRequest]DataSourceRequest request, string additionaldata)
{
...
原始文件返回带有数据的DataSourceRequest,而辅助文件将返回附加数据,但是有一个空的请求对象。
我不确定如何从这里开始。
答案 0 :(得分:2)
感谢同事,答案变得相当明显!错误在于如何设置发送的JSON对象,不应使用请求参数。
var extraParams = { /* appended data object */
sort: prepared.sort,
filter: prepared.filter,
group: prepared.group,
additionaldata: "test"
};
DataSourceRequest属性会自动同步到控制器中的参数。