asp.net-mvc - JQGrid 加载大量数据

标签 asp.net-mvc asp.net-mvc-3 jqgrid

情况

我在我的项目中使用 Trirand JQGrid for MVC[服务器端]。

我在一个表中有超过 50 万条记录。

我通过调用这段代码来加载数据。这就是 500000 条记录集合的原因。

IEnumerable<myIndexViewModel> myviewmodel= _allincidents.Select(x => new myIndexViewModel
            {

                IncidentRequestStatus = x.RequestStatus,
                RequestByUserName = x.RequestByUserName,
                Subject = x.Subject

            });     
gridModel.JqGrid.DataBind(myviewmodel.AsQueryable());

JQgrid 可以很好地处理我点击的每个下一页的基于 json 的 ajax 请求。

问题

我不想在页面加载事件上加载 50 万条记录,因为它会杀死 jqgrid。

如果我在数据库中编写一个存储过程来请求显示特定页面,那么它只会加载 myviewmodel 集合中的该页面。

当单击下一页时,如何从数据库动态获取页面。这在 jqgrid 中可能吗?

情况2

根据 VIJAY 和 MARK 的答案,他们所展示的方法是绝对正确的,但在这里,MVC 的 JQGRID 设置 DATAURL 属性来进行方法调用。在本例中是 IncidentGridRequest。

单击网格下一页或上一页时如何发送页码?

incidentModel.IncidentGrid.DataUrl = Url.Action("IncidentGridRequest")

 public JsonResult IncidentGridRequest()
        {
         }

最佳答案

将为网格提供结果的 Controller 操作可以接受来自 jqGrid 的一些额外信息。

    public ActionResult GetGridData(string sidx, string sord, int page, int rows, bool _search, string filters)

您感兴趣的主要部分是页面、行(sidx 用于列排序,sord 用于排序顺序,_search 如果在网格上进行了搜索,如果是,则过滤器包含搜索信息)

当您生成结果时,您应该能够

IEnumerable<myIndexViewModel> myviewmodel = allincidents.Select(x => new myIndexViewModel
            {

            IncidentRequestStatus = x.RequestStatus,
            RequestByUserName = x.RequestByUserName,
            Subject = x.Subject

        }).Skip((page - 1) * rows).Take(rows)
PS。我不确定您使用 IEnumberable 是否会从数据库中移动大量数据,但当您为 jqGrid 生成此数据子集时,您可能希望使用 IQueryable。

编辑:要处理分页问题,​​您应该计算查询中的总记录数并将该值传递给网格,例如

int totalRecords = myviewmodel.Count();

然后您会将其作为 json 值传递到网格。例如

    var jsonData = new
    {
        total = (totalRecords + rows - 1) / rows,
        page = page,
        records = totalRecords,
        userdata = new {SearchResultsFound = searchResultsFound},
        rows = (
        ......

关于asp.net-mvc - JQGrid 加载大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14393350/

相关文章:

c# - 我如何迭代 Asp.net MVC3 中的项目

asp.net-mvc-3 - Razor 引用文档

jqGrid,如何从查询中填充选择列表

c# - 这个 MVC 项目中的第一行是什么意思?

c# - 2 个项目核心和 Web 中需要 ViewModel 对象 - 循环依赖

c# - 检查列表是否包含多个指定值

jquery - 为什么 editurl : 'clientData' when deleting a second row from jqGrid? 出现 404 错误

asp.net-mvc - NET Core 3.1 MVC 授权/身份验证,使用在单独的 Net Core 3.1 Web Api 中从外部获取的 token (JWT)

.net - 如何从 postgresql 数据库生成 edmx

javascript - JavaScript 中未定义错误的长度