2016-09-22 5 views
0

В следующем коде я привязываю результаты сетки от действия контроллера. Все работает отлично, но метод не останавливается при загрузке. Все время выполняется metid. Вот мой код: КодПривязать результаты к 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. Таким образом, вы создали бесконечный цикл.

Я не уверен, какова цель подкачки в обработчике изменений, но вся эта настройка не может работать так - подумайте о ее переработке.

Смежные вопросы