Выберите элемент из kendoGrid - PullRequest
0 голосов
/ 27 февраля 2019

В базе данных много элементов, которые отображаются в Grid Kendo.Сетка загружает 50 записей из БД, пока пользователь выполняет прокрутку.Я хочу реализовать функцию, которая позволяет пользователю видеть последний выбранный элемент в сетке, когда он покидает страницу, а затем снова возвращается на страницу с сеткой (идентификатор выбранного элемента хранится в файлах cookie).И последовательность элементов должна быть одинаковой.Но проблема в том, что пользователь может выбрать элемент, который не содержится в текущих 50 записях в сетке, и тогда ни один элемент не будет выбран.Вопрос в том, как все это реализовать с помощью сетки кендо?Или это вообще реально?Любая помощь приветствуется.Вот мой код вида

@(Html.Kendo().Grid<RegistryUserDto>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(o => o.Name).Title(UserResources.NameLabelText).Width(180);
        columns.Bound(o => o.CompanyName).Title(UserResources.CompanyLabelText).Width(187);
        columns.Bound(o => o.RoleNames).Title(UserResources.TypeLabelText).Width(100);
        columns.Bound(o => o.Id).Hidden();
    })
    .Sortable()
    .Selectable(x => x.Mode(GridSelectionMode.Single))
    .Scrollable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(100)
        .Read(read => read.Action("GetUsersList", "Users").Data("GetFilterParameters"))
    )
)

А вот метод контроллера:

public ActionResult GetUsersList(string parameters, [DataSourceRequest] DataSourceRequest request)
{
    var getUsersRequestViewModel = new GetUsersRequestViewModel();
    if (!string.IsNullOrWhiteSpace(parameters))
        getUsersRequestViewModel = JsonConvert.DeserializeObject<GetUsersRequestViewModel>(parameters);
    var getUsersRequestDto = new GetRegistryUsersRequestDto()
    {
        Name = getUsersRequestViewModel.Name,
        CompanyId = getUsersRequestViewModel.CompanyId,
        RoleId = getUsersRequestViewModel.RoleId
    };
    var usersList = _usersDomainService.GetRegistryUsers(getUsersRequestDto);

    return Json(usersList.ToDataSourceResult(request));
}

1 Ответ

0 голосов
/ 08 марта 2019

Наблюдать за сетевым трафиком и запросом к GetUserList.Он будет иметь такие свойства, как sort: page: pageSize:.Когда пользователь делает выбор, идентификатор будет на странице, поэтому сохраните и эти сетевые параметры.

При повторном перемещении на страницу получите сохраненную страницу и идентификатор.

  • Получитьстраница данных с grid.dataSource.page(<saved-page>)
  • Восстановить выбор с помощью grid.select(grid.table.find('tr[data-id="'+<saved-id>+'"]'))
...