【发布时间】: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