2016-11-15 3 views
1

У меня есть кендо столбец сетки, как это:Сброс Кендо Сетка столбец

$("#lstCategory").kendoGrid({ 
     dataSource: { 
      data: info, 
      autoSync: true, 
      schema: { 
       model: { 
        fields: { 
         category: { editable: false, type: "string" }, 
         subCategory: { editable: false, type: "string" } 
        } 
       } 
      }, 
      pageSize: 7, 
      group: { 
       field: "category", 
       aggregates: [ 
        { field: "category", aggregate: "count" } 
       ] 
      } 
     }, 
     sortable: true, 
     scrollable: false, 
     pageable: true, 
     editable: true, 
     columns: [ 
      { field: "category", title: "Categoría", aggregates: ["count"], groupFooterTemplate: "Total: #=count#" }, 
      { field: "subCategory", title: "Subcategoria" }, 
      { command: "destroy", title: "", width: "150px" } 

     ] 
    }); 
} 

Там я добавить поля для последующей деятельности. Проблема в том, я хочу, чтобы сбросить эту сетку после того, как пост, чтобы очистить его и вставлять другие значения, я пытаюсь использовать следующие команды:

$("#lstCategory").empty(); // this one dissapear kendo grid 
    $('#lstCategory').data('kendoGrid').refresh(); 
    $('#lstCategory').data().kendoGrid.destroy(); 

, но ни один из них не смывать мои кендо после поста, что может быть проблемой есть?

Update:

Try, как Dread Пиратская ответ:

после после действия я посылаю это:

var grid = $("#lstCategory").getKendoGrid(); 
        var info = refeshInfoFromServer(); 
        grid.dataSource.data(info); 

function refeshInfoFromServer() { 
    return $("#lstCategory").data("kendoGrid").dataSource.read(); 
} 

Это, кажется, работает, но моя страница застревают в загрузке. Google Chrome Inspector return

kendo.all.min.js:11 Uncaught TypeError: e.slice is not a function

+0

Кусочек ошибка возникает, когда ваша схема не соответствует объекту, который вы получаете от сервера или из заданного списка объектов. Вы должны определить, в какие данные свойства поступают. Если вы не указали, что оно работает с некоторым значением по умолчанию. http://docs.telerik.com/kendo-ui/api/javascript/data/datasource – Ademar

+0

Это не то, что я предложил ... вам нужно повторно заполнить информацию с сервера * однако вы сделали это в первый раз *. Нет способа, чтобы info = grid.dataSource.read(), поскольку метод read() возвращает данные Promise * not *. Итак, что вы сейчас делаете, это установить данные dataSource на Promise ..., который даже не работает удаленно, и почему вы получаете ошибку среза ... поскольку срез вызывается в Promise you вместо этого, вместо законного массива данных. Вы должны показать нам, как информация была заполнена в первую очередь. –

ответ

1

Вы хотите перечитать данные для сетки с сервера после публикации?

grid.refresh() будет только перестроить сетку к текущему источнику данных ... он не заставит базовый dataSource перечитывать с сервера. http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#methods-refresh

Что вы обычно хотите сделать, чтобы заставить сетку, чтобы снова ударить сервер должен использовать для чтения Базового DataSource в() метод (http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#methods-read), то есть:

$("#lstCategory").data("kendoGrid").dataSource.read(); 

Но это ударит только server, если dataSource привязан к удаленной конечной точке чтения, иначе он просто перечитывает локальный массив ... данные вашего dataSource поступают из таинственной переменной, называемой «информация», которая, вероятно, является уже выбранным массивом, да ?

В этом случае вам нужно будет сначала принудительно обновить информационный массив (сделав все, что вы сделали, чтобы заполнить его в первый раз). Затем обновите источник данных сетки новыми данными, затем снова заново перетащите сетку.

Что-то вроде этого:

// Do Post or whatever... 
var grid = $("#lstCategory").getKendoGrid(); 
info = refeshInfoFromServer(); 
grid.dataSource.data(info); 
//grid.refresh(); // NOTE: not necessary as .data(info) will automatically do rebind to the grid it belongs to.automatically do this. 

Работа демо с фальшивыми данными: http://dojo.telerik.com/@Stephen/aGAQo

+0

Я стараюсь как ваш ответ, но у меня проблема, я публикую его в своем вопросе, можете ли вы его просмотреть? –

+0

Я получаю его работу, я отправляю ответ на основе своих собственных данных –

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