Kendogrid destroy() и воссоздать таблицу на новом источнике данных, почему старые столбцы таблицы все еще существуют?
При вызове destroy()
в сетке KendoUI и затем воссоздайте таблицу в новом DataSource
: почему старые столбцы таблицы все еще существуют?
Единственный элемент, в котором остается слово, - это элемент. Как сообщить сетке прочитать новые столбцы источника данных (он читает все остальное правильно).
(если я делаю 2 разных элемента, они оба заполняются должным образом, но я просто просто сохраняю 1 элемент и заменяю таблицу элементов уничтожением и повторным инициализацией)
Ответы
Ответ 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");