【问题标题】:Select element from kendoGrid从 kendoGrid 中选择元素
【发布时间】:2019-02-27 10:12:56
【问题描述】:

数据库中有很多元素,它们都显示在剑道网格中。用户滚动时,网格从 db 加载 50 条记录。 我想实现允许用户查看网格中最后一个选定元素的功能,当他离开页面然后再次返回到带有网格的页面时(选定的元素 id 存储在 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));
}

【问题讨论】:

  • 如果网格作为滚动加载,并且您希望用户能够在不到达底部的情况下获取网格中的最后一个元素,那么您无法传递该元素(甚至已加载)回到控制器,因为应用程序甚至不知道它存在。您可能需要在某个地方有一个用户可以单击的按钮,该按钮调用存储过程以从数据库中获取最后一条记录并将其返回
  • @JamesS 不是db的最后一条记录,而是grid最后选中的记录,可以是最后一条记录,也可以是中间的记录

标签: c# asp.net asp.net-mvc kendo-ui kendo-grid


【解决方案1】:

观察网络流量和对 GetUserList 的请求。它将具有sort: page: pageSize: 等属性。当用户做出选择时,id 将出现在页面上,因此请保存这些网络参数。

在重新导航到页面时检索保存的页面和 id。

  • 使用grid.dataSource.page(&lt;saved-page&gt;)检索数据页
  • 使用grid.select(grid.table.find('tr[data-id="'+&lt;saved-id&gt;+'"]')) 重新制作选择

【讨论】:

  • 好的,但是每次我重新加载页面时 data-uid 都会发生变化,以及当页面数量超过 50 时如何滚动到所需页面?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2011-08-14
相关资源
最近更新 更多