2017-04-21 109 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) 

我希望這可以幫助別人。快樂的編碼!

相關問題