2016-09-22 195 views
0

在下面的代碼中,我綁定了來自控制器操作的網格結果。一切都很完美,但方法並沒有停止加載。所有的時間都在執行。這裏是我的代碼:將結果綁定到kendoGrid

<script> 

    $(function() { 
    $("#invoices-grid").kendoGrid({ 

     dataSource: { 

     type: "json", 
     transport: { 
      read: { 
      url: "@Html.Raw(Url.Action("List", "Finances"))", 
      type: "POST", 
      dataType: "json", 
      data: additionalData 
      }, 

     }, 
     schema: { 
      data: "Data", 
      total: "Total", 
      errors: "Errors" 
     }, 
     error: function(e) { 
      display_kendoui_grid_error(e); 
      // Cancel the changes 
      this.cancelChanges(); 
     }, 
     pageSize: 20, 
     serverPaging: true, 
     serverFiltering: true, 
     serverSorting: true 
     }, 
     dataBound: function() { 
     var row = this.element.find('tbody tr:first'); 
     this.select(row); 
     }, 

     columns: [ 

     { 
      field: "JobNumber", 
      title: "@T("gp.Invoice.Fields.JobNumber")", 
      template: '#= JobNumber #' 
     }, 
     { 
      field: "CustomerName", 
      title: "@T("gp.Invoice.Fields.CustomerName")", 
      template: '#= CustomerName #' 
     }, 
     { 
      field: "DepartmentName", 
      title: "@T("gp.Invoice.Fields.DepartmentName")", 
      template: '#= DepartmentName #' 
     }, 
     { 
      field: "DateInvoice", 
      title: "@T("gp.Invoice.Fields.DateInvoice")", 
      template: '#= DateInvoice #' 
     }, 
     { 
      field: "ValidDays", 
      title: "@T("gp.Invoice.Fields.ValidDays")", 
      template: '#= ValidDays #' 
     }, 
     { 
      field: "Delivery", 
      title: "@T("gp.Invoice.Fields.Delivery")", 
      template: '#= Delivery #' 
     }, 
     { 
      field: "Payed", 
      title: "@T("gp.Invoice.Fields.IsPayed")", 
      template: '#= (Payed == 2) ? "Комп." : ((Payed == 1) ? "ДЕ" : "НЕ") #' 
     }, 
     { 
      field: "Id", 
      title: "@T("Common.Edit")", 
      width: 100, 
      template: '<a href="Edit/#=Id#">@T("Common.Edit")</a>' 
     } 
     ], 
     pageable: { 
     refresh: true, 
     pageSizes: [5, 10, 20, 50] 
     }, 
     editable: { 
     confirmation: false, 
     mode: "inline" 
     }, 
     scrollable: false, 

     selectable: true, 
     change: function(e) { 
     var selectedRows = this.select(); 

     var jobId = parseInt($(selectedRows).data('job-id')); 
     var jobItemId = parseInt($(selectedRows).data('job-item-id')); 

     var result = $.get("@Url.Action("SideDetails", "Production")/" + jobItemId); 

     result.done(function(data) { 

      if (data) { 
      $(".job-edit .jobItemDetails").html(data); 
      } 

     }); 

     var grid = $('#invoices-grid').data('kendoGrid'); 
     grid.dataSource.page(1); 

     }, 


     rowTemplate: kendo.template($("#invoiceRowTemplate").html()), 

    }); 
    }); 

</script> 

控制器代碼:

[HttpPost] 
    public ActionResult List(DataSourceRequest command, FinanceListModel model) 
    { 
     var searchString = model.SearchJobItemNumber; 
     var isChecked = model.IsChecked; 
     var invoices = _invoiceService.GetAllInvoices(searchString, isChecked); 

     var gridModel = new DataSourceResult 
     { 
      Data = invoices.Select(x => 
      { 
       var jobModel = x.ToModel(); 
       return jobModel; 
      }), 
      Total = invoices.TotalCount 
     }; 


     return Json(gridModel, "application/json", JsonRequestBehavior.AllowGet); 


    } 

回答

0

dataBound事件處理程序,一個select方法被調用,這會觸發change事件,在那裏,page方法被調用,觸發新的請求並且新的dataBound。這樣你就創造了一個無限循環。

我不知道在更改處理程序中分頁的目的是什麼,但是整個設置無法以這種方式工作 - 請考慮重新處理它。