Кендо сетка не загружается должным образом - PullRequest
0 голосов
/ 02 декабря 2018

Постановка проблемы:

Сетка не обновляется должным образом.Есть несколько столбцов, для которых необходимо применить CSS.Я могу понять, если столбцы требуют некоторого дополнительного CSS, требуется некоторое время для загрузки сетки.У меня есть сетка кендо с ~ 40 столбцами.Несколько столбцов имеют некоторые CSS, примененные к ячейке.Мы обновляем эту сетку каждые 10 секунд.Иногда сетка не загружается должным образом.Допустим, сетка показывает 100 записей.Через 10 секунд, если мы получим 10 новых записей, нам нужно показать 110 записей в сетке.Если что-то изменилось, нам нужно обновить его, а если что-то удалить, нам нужно удалить из сетки.Сетка использует наблюдаемый массив.Я узнал, что каждый раз, когда я помещаю элемент в наблюдаемый массив, который запускает набор событий.По этой причине в моем коде всякий раз, когда я получаю разные данные, я удаляю все элементы из наблюдаемого массива и добавляю все обратно.Еще один момент, на который следует обратить внимание: когда пользователь выбирает элемент в сетке, справа мы показываем панель с некоторой информацией.Поскольку мы обновляем сетку каждые 10 секунд, мы должны поддерживать выбор, чтобы пользователь продолжал делать то, что он делает.В противном случае это становится раздражающим, так как он должен нажимать на строку каждые 10 секунд, когда мы обновляем сетку.Но иногда сетка не загружается должным образом.Всякий раз, когда сетка не была загружена должным образом, я регистрировал ниже, и они не были равны $ scope.employeeDataSource.data (). Length (длина источника данных) и $ scope.kendoGrid.dataSource.total () (записи, загруженные всетка) Если мне не хватает какой-то информации, дайте мне знать.

Как настроить данные в сетке?Даже если сетка загружает данные немного медленнее, это нормально, я не хочу, чтобы сетка кендо показывала неверные данные или веб-страницу зависала.

// У меня есть сетка кендо, которая определена следующим образом

<div kendo-grid="kendoGrid" k-data-source="employeeDataSource" k-options="gridOptions" k-on-change="selectedChanged(data)"></div>

У меня есть такой источник данных

$scope.employeeDataSource = new kendo.data.DataSource({ data: employeeObservable, change: (e) => { $timeout(() => { $scope.totalNumberOfRecords = $scope.kendoGrid.dataSource.total(); }); }, schema: { model: { id: "Id", fields: { EmployeeCount: { type: "number" } //few fields to follow here } } } });

Важная часть: так я обновляю элементы в сетке.Иногда это работает, а иногда сетка не загружается должным образом. $scope.updateGridData = (newData) => { // we remove all the items from the observable array and load the new set, all at once. employeeObservable.unbind("change"); employeeObservable.splice(0, employeeObservable.length); employeeObservable.bind("change", allocationObservableChangeEvent); //load the new set of observable array at once employeeObservable.push.apply(employeeObservable, newData) // I can also set data like this. should I use ObservableArray or set data using the kendoGrid? //$scope.kendoGrid.dataSource.data(employeeObservable); }

...