jquery kendo grid Мне нужно получить выбранные строки массива элементов данных, даже если я разбиваю на страницы разбиение на страницы на стороне сервера true

#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);
}
  

Обновленный DOJO

Примечание: свойство ProductId , используемое в приведенном выше коде, должно совпадать с заданным в schema.model.id параметре:

 schema: {
    model: {
        id: "ProductID"
    }
}
  

Комментарии:

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

2. Привет, пожалуйста, помогите мне в этом.

3. Тогда @raj использует глобальный массив.