Мне нужно перезагрузить всю сетку (не только данные).
Я пытаюсь:
$('#GridName').data('kendoGrid').dataSource.read();
$('#GridName').data('kendoGrid').refresh();
Но read()
перезагружает только данные, а refresh()
не работает. Когда пользователь нажимает кнопку, мне нужно воссоздать всю таблицу с новыми столбцами (я не знаю, сколько столбцов или какие столбцы, сервер обрабатывает это).
Пользователи могут изменять столбцы, которые они видят, с помощью флажка html. В первый раз таблица заряжается правильно, но если пользователь изменяет значение флажка, столбцы не меняются. Если отменить выбор параметра, столбец станет пустым, а если пользователь добавит параметр, новый столбец не появится.
Как я могу этого добиться?
2 ответа
Вы должны уничтожить и воссоздать сетку, чтобы изменить столбцы.
$.ajax(
{
type: 'GET',
url: yourURL,
dataType: 'json',
success: function (result) {
$('#Grid').data('kendoGrid').destroy();
$('#Grid').empty(); //necessary to remove the old html
$("#grid").kendoGrid({
dataSource: {
data: result,
schema: {
data: "d"
}
}
});
}
});
Результат вашего ajax должен быть примерно таким:
var result = { 'd': [
{ description: "Description 1", number: 30, price: 3.5 },
{ description: "Description 2", number: 33, price: 4 },
{ description: "Description 3", number: 40, price: 4.5 }
]}
Вы хотите попытаться повторно выбрать последнюю запись? Эта функция ниже использует тот же метод, который вы описали выше, и работает уже много лет. То, что вы разместили выше, должно работать. Что заставляет вас говорить, что это не работает?
function refreshGrid(gridID) {
var grid = $('#' + gridID).data('kendoGrid');
var selectedItem = grid.dataItem(grid.select());
grid.dataSource.read();
grid.refresh();
if (selectedItem != null && selectedItem.uid != null) {
var row = grid.tbody.find('tr[data-uid="' + selectedItem.uid + '"]');
row.addClass("k-state-selected");
grid.select(row);
grid.select(grid.table.find('tr').first());
}
}
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.