【问题标题】:Paging not working on Dynamically populated JqGrid分页在动态填充的 JqGrid 上不起作用
【发布时间】:2013-03-15 12:34:33
【问题描述】:

我需要根据视图的选择动态填充网格。 我已按照以下链接动态填充网格。

https://codereview.stackexchange.com/questions/3668/suggestions-for-jqgrid-dynamic-columns-and-server-side-paging-sortin-filterin

Problem showing jqgrid with dynamic column binding

它使用两个 ajax 调用。一次获取 JqGrid 的 ColModel 和 ColNames,第二次调用获取 colData。 返回的数据只针对当前Page(即20条记录-Pagesize 20)。

我遇到的问题是我的服务器端分页无法正常工作。当我点击寻呼机上的下一个按钮时,只重新加载了第一页。

处理程序中的代码如下

                var numberOfRows = context.Request["rowsPerPage"];
                int nRows, iPage;
                if (String.IsNullOrEmpty(numberOfRows) || !int.TryParse(numberOfRows, NumberStyles.Integer, CultureInfo.InvariantCulture, out nRows))
                    nRows = PageSize; // default value
                var pageIndex = context.Request["pageIndex"];
                if (String.IsNullOrEmpty(pageIndex) || !int.TryParse(pageIndex, NumberStyles.Integer, CultureInfo.InvariantCulture, out iPage))
                    iPage = 1; // default value

context.Request["rowsPerPage"] 和 context.Request["pageIndex"] 总是返回 null 并设置为默认值。 我错过了什么。请帮忙。

【问题讨论】:

    标签: asp.net jquery jqgrid


    【解决方案1】:

    您是否正在检查来自 jqGrid 的 POST?它应该包括 sidx、sord、page、rows、_search、filters 值。

    然后您的控制器会想要访问这些值来处理数据列的排序顺序以及要显示的页面。控制器的一个例子是:

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

    编辑:

    Passing Data to the jqGrid:
                var jsonData = new
            {
                total = (totalRecords + rows - 1) / rows,
                page = page,
                records = totalRecords,                
                userdata = new { TradeIniator = tradeIniator, TradeRecepient = tradeRecepient, AnonUser = anonUser, Subtotal = tradeTotal.ToString(), FoilTradeAmount = "Trade Total" },
                rows = (
                    from tempCard in pagedQuery.ToList()                    
                    select new
                    {
                        cell = new string[] {                    
                            value1,
                            value2, 
                            ....
                        }
                    }).ToArray()
            };//var jsonData
    
     return Json(jsonData, JsonRequestBehavior.AllowGet);
    

    【讨论】:

    • 是的,我设置的参数名称如下:
    • prmNames: { page: "pageIndex", rows: "rowsPerPage", sort: "sortByColumn", order: "sortOrder", search: "isSearching" },
    • 所以您的 jqGrid 正在传递这些参数,您的控制器正在接收这些值,并且您正在根据这些参数更改您提供给 jqGrid 的数据集?
    • 当整个视图作为数据传递到网格时,分页就会起作用。是的,网格参数接收良好。
    • 当我使用使用 OFFSET 和 FETCH NEXT 的 SQL 分页并仅传递页面中的记录时,网格的分页不起作用。我发送了网格数据 {"total":3,"page":1,"records":14,"rows":[["Name1","Desc1","Type1"],["Name2","Desc2 ","Type2"],["Name3","Desc3","Type3"]]}
    【解决方案2】:

    好的,我发现了问题。我的 colModel 中有以下内容 [{"name":"Id","width":"300"},{"name":"Name","width":"300"},{"name":"Type","width": "300"}];

    还有 width="auto" 在我的网格初始化中。

    因此,分页和排序参数返回 null。我删除了 line width="auto",现在参数以正确的值传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 2020-03-08
      相关资源
      最近更新 更多