Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Другим способом Grid принимает во внимание старый html, который оставлен - не забывайте, что Grid может быть инициализирована из таблицы, например здесь.

Ответ 2

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

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

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

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

Ответ 3

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

  if (vm.mainHierGrid != null) {
            //vm.mainHierGrid.data().kendoGrid.destroy();
            $('#mainGrid').data().kendoGrid.destroy();
            //$('#mainGrid').empty();
            vm.mainHierGrid.destroy();
        }

Ответ 4

Разрушить сетку кендо и привязать ее

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

                var kgCopyGrid = $("#kgCopyEntityGrid").kendoGrid({
// your code here
                }).data("kendoGrid");