Kendo Grid将表格数据作为参数角色传递给MVC

时间:2017-04-21 18:24:46

标签: angularjs kendo-ui kendo-grid

我在我的应用程序中从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;
                    });
            }

但是,即使方法正确执行,网格也不会使用新数据进行更新。

非常感谢任何帮助!

1 个答案:

答案 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)

我希望这有助于其他人。快乐的编码!