2017-04-21 107 views
1

我正在从应用程序中的Angular UI-Grid切换到Kendo UI-Grid。目前,搜索条件经由搜索表单然后经由服务(如下面)发送到我的MVC控制器方法收集:Kendo Grid将表单数据作为参数传递给MVC

generalsearchService.submitSearch($scope.form) 
    .success(function (data) { 
    $scope.gridOptions.data = (data); 
    }); 

然而,我无法找出如何将表单数据传递到使用剑道方法格。我曾尝试以下:

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

虽然上面的服务调用正在击中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”实际发送页面,每页,过滤器和排序的信息,而“形式”是用作存储过程的参数收集到的表单数据。我还必须删除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) 

我希望这可以帮助别人。快乐的编码!

相关问题