我在我的应用程序中从Angular UI-Grid切换到Kendo UI-Grid。目前,搜索条件通过搜索表单收集,然后通过服务发送到我的MVC控制器方法(如下所示):
generalsearchService.submitSearch($scope.form)
.success(function (data) {
$scope.gridOptions.data = (data);
});
但是,我无法弄清楚如何使用Kendo网格将表单数据传递给方法。我尝试过以下方法:
var form = $scope.form;
$scope.mainGridOptions = {
dataSource: new kendo.data.DataSource({
type: "aspnetmvc-ajax",
transport: {
read: "/SSQV4/SSQV5/Search/SubmitCriteria",
type: "POST",
data:{form: form}
},
schema: {
data: "Data",
total: "Total"
},
pageSize: 25,
serverPaging: true,
serverFiltering: true,
serverSorting: true
}),
我的MVC控制器方法(第一行):
public async Task<ActionResult> SubmitCriteria(ContractorSearchViewModel form)
更新:我可以通过将读取的URL更改为如下函数来将参数传递给控制器:
read: function() {
generalsearchService.submitSearch(form)
.success(function (data) {
return data;
});
}
但是,即使方法正确执行,网格也不会使用新数据进行更新。
非常感谢任何帮助!
答案 0 :(得分:1)
虽然上面的服务调用是在击中MVC控制器,但数据并没有填充网格。服务电话需要稍微调整一下。以下是最终奏效的内容:
dataSource: new kendo.data.DataSource({
transport: {
read: function (e) {
generalsearchService.submitSearch(e.data, form)
.then(function success(response) {
e.success(response.data);
});
}
},
schema: {
data: "Data",
total: "Total"
},
pageSize: 25,
serverPaging: true,
serverFiltering: true,
serverSorting: true
}),
&#34; e.data&#34;实际上发送页面,PageSize,过滤器和排序信息,而#34;形式&#34;是收集的表单数据,用作存储过程的参数。我还必须删除&#34; [DataSourceRequest]&#34;使DataSourceRequest实际使用我的服务发送所有信息。服务中的http调用如下所示:
this.submitSearch = function (command, form) {
return $http.post('/SSQV4/SSQV5/Search/SubmitCriteria', {'command': command, 'form': form});
};
并且MVC控制器方法如下所示:
public async Task<ActionResult> SubmitCriteria(DataSourceRequest command, ContractorSearchViewModel form)
我希望这有助于其他人。快乐的编码!