#javascript #kendo-ui
#javascript #kendo-ui
Вопрос:
Я использую jquery kendo grid Kendo UI v2019.2.514
serverPaging: true,
serverSorting: true,
serverFiltering: true,
pageSize: 15
Пример приведен ниже, но здесь нет разбивки на страницы на стороне сервера
https://dojo.telerik.com/UHUKahIM
Мне нужны данные выбранных строк в событии изменения или в каком-либо другом событии, например: — я выбрал 2 строки в page: 1 и page: 2, выбрал 3 строки, всего 5 строк, мне нужны эти выбранные 5 строк массива DataItems в переменной массива. Пожалуйста, помогите мне в этом, я попробовал, как показано ниже
function onChange(e) {
var rows = e.sender.select();
rows.each(function(e) {
var grid = $("#grid").data("kendoGrid");
var dataItem = grid.dataItem(this);
console.log(dataItem);
})
};
но это не соответствует моим ожиданиям, это работает только с текущей страницей, мне нужны все страницы, выбранные записи в виде массива
Ответ №1:
Опубликованный вами пример DOJO показывает, как получить выбранные идентификаторы между страницами, используя this.selectedKeyNames()
. Используйте этот метод, чтобы получить массив элементов данных из источника данных:
function onChange(arg) {
let selectedIds = this.selectedKeyNames(),
dataItems = this.dataSource.data().toJSON().filter(dataItem => {
return selectedIds.indexOf(dataItem.ProductID.toString()) > -1;
});
console.log(dataItems);
}
Примечание: свойство ProductId
, используемое в приведенном выше коде, должно совпадать с заданным в schema.model.id
параметре:
schema: {
model: {
id: "ProductID"
}
}
Комментарии:
1. страница: 1 я выбираю 2 записи, элементы данных отображают 2 элемента нормально, я перехожу на 2-ю страницу, я выбираю одну запись, здесь отображаются элементы данных / печатается только 1 элемент, это не нормально, здесь нужно напечатать 3 элемента, я использую разбивку на страницы на стороне сервера.
2. Привет, пожалуйста, помогите мне в этом.
3. Тогда @raj использует глобальный массив.