Kendogrid destroy() и воссоздание таблицы в новом источнике данных, почему старые столбцы таблицы все еще существуют?

При вызове destroy() в KendoUI Grid, а затем воссоздании таблицы на новом DataSource: почему старые столбцы таблицы все еще существуют?

Единственный элемент, который остается в силе, — это элемент. Как сообщить сетке, чтобы она читала новые столбцы источника данных (все остальное читается правильно).

(если я создам 2 разных элемента, они оба заполнятся правильно, но я просто оставлю 1 элемент и заменю таблицу элементов уничтожением и повторным запуском)


person afinegan    schedule 25.03.2013    source источник


Ответы (4)


Скорее всего, это связано с тем, что вы не очищаете содержимое контейнера Grid. например

$('#gridName').data().kendoGrid.destroy();
$('#gridName').empty();

или более короткий синтаксис

$('#gridName').kendoGrid('destroy').empty();

В другом случае Grid учитывает старый оставшийся html — не забывайте, что Grid можно инициализировать из таблицы, например здесь.

person Petur Subev    schedule 25.03.2013
comment
Я получаю ошибку времени выполнения Javascript: невозможно получить свойство «kendoGrid» неопределенной или нулевой ссылки. Когда я пытаюсь выполнить вышеупомянутый javascript. - person Jeremy; 15.10.2015

Просто хочу уточнить последний фрагмент ответа Петра Субева, потому что это помогло мне:

"не забывайте, что Grid может быть инициализирован из таблицы, как здесь "

Это просто говорит о том, что в вашем HTML вы использовали тег <table>, а не тег <div>. Использование тега <table> отделяет данные таблицы сетки от столбцов сетки, поэтому, когда вы делаете $('#gridName').kendoGrid('destroy').empty(), он только уничтожает/очищает данные таблицы, а не информацию столбца. .

Переключите тег HTML <table> на тег <div>, чтобы получить желаемый результат.

person JHaazez    schedule 07.12.2016

Я работаю в рамках angular и, похоже, не могу повторно запустить сетку Kendo с новым источником данных и новыми столбцами. Ничего не работает на 2-й сетке init. Я пробовал:

  if (vm.mainHierGrid != null) {
            //vm.mainHierGrid.data().kendoGrid.destroy();
            $('#mainGrid').data().kendoGrid.destroy();
            //$('#mainGrid').empty();
            vm.mainHierGrid.destroy();
        }
person bob.mazzo    schedule 29.06.2014
comment
У меня была такая же проблема, в итоге я использовал сетку в jQuery, встроенную в угловую директиву. - person ps0604; 29.01.2015

Уничтожьте сетку кендо и перепривяжите ее

if ($('#kgCopyEntityGrid').hasClass("k-grid")) {
                    $('#kgCopyEntityGrid').kendoGrid('destroy').empty();
                }

                var kgCopyGrid = $("#kgCopyEntityGrid").kendoGrid({
// your code here
                }).data("kendoGrid");
person Awadhesh Singh    schedule 23.08.2019