2016-11-27 1 views
0

У меня есть кендогрид, и когда я добавляю новую запись и перестраиваю сетку, новая запись не находится в сетке, однако, если я использую фильтр для тогда я это вижу, но чтобы увидеть его в сетке, мне нужно обновить мою страницу.Сетка не обновляется с новой записью при повторной заново, но новая запись найдена при фильтрации

При загрузке страницы он вызывает эту функцию

function GetCustomerGridData() { 
    kendo.ui.progress($("#Customer-Grid"), true); 
    $.ajax({ 
     type: "GET", 
     url: URLParam.GetActiveCustomersForTheGrid, 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     success: function (data, textStatus, jqXHR) { 
      LoadCustomerGrid(data); 
      kendo.ui.progress($("#Customer-Grid"), false); 
     } 
    }); 
} 

LoadCustomerGrid Является ли это

function LoadCustomerGrid(newData) {  
    CreateCustomerGrid(newData); 
} 

Сама сетка ..

var customerGrid, 
    CreateCustomerGrid = function (newData) { 
     customerGrid = $("#Customer-Grid").kendoGrid({ 
      dataSource: { 
       data: newData 
      }, 
      schema: { 
       model: { 
        CustomerID: { type: "number" } 
       } 
      }, 
      filterable: { 
       mode: "row" 
      }, 
      columns: [ 
       { 
        template: "<input type='checkbox' class='checkbox' />", 
        width: "30px" 
       } 
      { 
       field: "LastName", 
       title: "Last Name", 
       filterable: { 
        cell: { 
         showOperators: false, 
         operator: "contains", 
         inputHeight: "34px" 
        } 
       } 
      }, 
      { 
       field: "FirstName", 
       title: "Name", 
       filterable: { 
        cell: { 
         showOperators: false, 
         operator: "contains" 
        } 
       } 
      }, 
      { 
       field: "Phone", 
       title: "Phone", 
       filterable: { 
        cell: { 
         showOperators: false, 
         operator: "contains" 
        } 
       } 
      }, 
      { 
       field: "Address", 
       title: "Address", 
       filterable: { 
        cell: { 
         showOperators: false, 
         operator: "contains" 
        } 
       } 
      }, 
      { 
       field: "City", 
       title: "City", 
       filterable: { 
        cell: { 
         showOperators: false, 
         operator: "contains" 
        } 
       } 
      }, 
      { 
       field: "Zip", 
       title: "Zip", 
       filterable: { 
        cell: { 
         showOperators: false, 
         operator: "contains" 
        } 
       } 
      } 
      ], 
      scrollable: true, 
      sortable: true, 
      pageable: { 
       pageSize: 20 
      }, 
      selectable: "row", 
      height: $("#Customer-Grid").closest(".col-height-full").height() - 60, 
      change: function (e) { 
       // Function call goes here 
       var detailRow = this.dataItem(this.select()); 
       var optionID = detailRow.get("CustomerID") 
      } 
     }).data("kendoGrid"); 
    } 

Когда я иду, чтобы добавить запись Я использую всплывающее окно

function CustomerPopupEditor() { 
    $("#showCustomerEdit").append("<div id='window'></div>"); 
    var myWindow = $("#window").kendoWindow({ 
     position: { 
      top: 100, 
      left: "30%" 
     }, 
     width: "40%", 
     title: "Add Customer", 
     content: "/Customer/CustomerEditor", 
     modal: true, 
     actions: [ 
      "Close" 
     ], 
     close: function (e) { 
      $("#window").data("kendoWindow").destroy(); 
     } 
    }).data("kendoWindow"); 
    myWindow.open(); 
    GetStates(); 
    HomeStorage.Keys.AddOrEdit = "Add"; 
} 

и при добавлении новой записи и нажмите кнопку сохранения, эта функция называется

function SubmitNewCustomer() { 
    var customer = NewCustomerToSubmit(); 
    GetAssignmentIDs(); 
    $.ajax({ 
     type: "POST", 
     url: URLParam.AddNewCustomer + "?assignments=" + HomeStorage.Keys.AssignmentIDString, 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     data: JSON.stringify(customer), 
     success: function (data, textStatus, jqXHR) { 
      HomeStorage.Keys.NewCustomerID = data.id;    
     }, 
     complete: function (e) { 
      GetCustomerGridData(); 
      ClearFields(); 
     } 
    }) 
} 

и когда я закрываю всплывающее окно на событии нажатия кнопки это называется

$("#btnCancel").click(function() { 
    ClearFields(); 
    GetCustomerGridData(); 
    CloseTheWindow(); 
}); 

В SubmitNewCustomer function Я попытался поместить GetCustomerGridData() в свою функцию успеха, и это тоже не сработало.

Данные, возвращаемые для GetCustomerGridData(), имеют более 30 тыс. Записей, но я не думаю, что это должно иметь большое значение.

Любая идея, что мне не хватает?

ответ

0

Я нашел решение вопроса, что я впадающий, я должен уничтожить сетку, а поэтому я добавил эту строку кода

$('#Customer-Grid').data('kendoGrid').destroy(); 

Я добавил это к моему CloseTheWindow() метод, то rebinded сетка и вновь добавленная запись, не обновляя страницу.