【问题标题】:Kendo Grid Pass Form Data as Parameter Angular to MVCKendo Grid 将表单数据作为参数 Angular 传递给 MVC
【发布时间】:2017-09-18 20:43:44
【问题描述】:

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

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

非常感谢任何帮助!

【问题讨论】:

    标签: angularjs kendo-ui kendo-grid


    【解决方案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
    
            }),
    

    “e.data”实际上是发送Page、PageSize、Filters和Sort信息,而“form”是收集的表单数据,作为存储过程的参数。我还必须删除“[DataSourceRequest]”,以便 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)
    

    我希望这对其他人有所帮助。编码愉快!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多