【问题标题】:jqGrid pagination page number text box not updatingjqGrid分页页码文本框未更新
【发布时间】:2014-03-19 11:42:35
【问题描述】:

这有点奇怪,但无论我做什么,寻呼机中的页码字段都没有更新。我可以输入页码,它会返回正确的记录,它会在调用时返回正确的页码信息

$('#jqGrid01').getGridParam('page')

如果我使用寻呼机按钮,它将正确刷新网格,但不会更新文本字段中的页码!

这是网格代码..

jQuery("#jqGrid01").jqGrid({
// data: mydata, datatype: "local",
url:'localhost/gridx/dashb_grid', mtype : "get", datatype: "json",
jsonReader: { root: "rows", page: "page", total: "total", records: "records", repeatitems: true, cell: 'cell', id: 'stock1', userdata: 'userdata'},
height: $gridh, rowNum: 100, rowList: [100,200,300,500,1000,2000,3000],
colNames:['Stock 1','Stock 2', 'Price 1', 'Price 2','Ratio','Correlation','ST % Mean', 'ST Drift', 'LT % Mean', 'LT Drift', 'RSI', 'RSI Drift', 'Beta 1', 'Beta 2',     'Industry 1', 'Industry 2', 'Earnings 1', 'Earnings 2'],
colModel:[
    {name:'stock1',index:'stock1', width:30, searchoptions:{sopt:['eq','ne','cn','bw','ew','lt','gt']}},
    {name:'stock2',index:'stock2', width:30, searchoptions:{sopt:['eq','ne','cn','bw','ew','lt','gt']}},
    {name:'price1',index:'price1', width:30, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'price2',index:'price2', width:30, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'ratio',index:'ratio', width:30, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'correlation',index:'correlation', width:42, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'st_mean',index:'st_mean', width:38, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'st_drift',index:'st_drift', width:35, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'lt_mean',index:'lt_mean', width:39, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'lt_drift',index:'lt_drift', width:35, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'rsi',index:'rsi', width:30, sorttype:"int", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'rsi_drift',index:'rsi_drift', width:35, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'beta1',index:'beta1', width:30, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'beta2',index:'beta2', width:30, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'industry1',index:'industry1', width:102, search:false},
    {name:'industry2',index:'industry2', width:102, search:false},
    {name:'earnings1',index:'earnings1', width:45, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}},
    {name:'earnings2',index:'earnings2', width:45, sorttype:"float", align:"right", searchoptions:{sopt:['eq','ne','lt','gt']}}
],
pager: "#jqGridPager01",
viewrecords: true, hidegrid:false,
sortname: 'stock1', sortorder: 'asc',
loadComplete: function() {
    // test

}
});

还尝试检查文本框元素,但它没有 id,所以我无法手动设置它,我在 jqGrid 文档或谷歌中找不到任何东西来设置它!

知道我做错了什么,如何解决它!

谢谢

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:

    您必须包含 loadonce:true 才能使您的分页工作。

    表示做客户端分页而不是服务器端分页

    也表示你是loading all the records at the same time

    如果您不想一次加载所有记录,那么您需要处理 url 中的 分页参数在服务器端获取数据。

    当您使用服务器端分页时,jqgrid 会自动发布名为pagerows 的参数。

    这里,Page 表示您所在的当前页面,rows 表示每页的记录数。

    因此,您需要将这些参数发送到数据库并相应地获取数据页面。

    既然你提到了datatype as JSon,那表示服务器端处理assumes 你对Server side paging 感兴趣。

    它希望您在 JSOn 响应中返回 页面和行。由于您的 json 不包含任何这些,因此默认显示为零。

    所以,pagination obviuosly will not work

    如果您在服务器端使用 dotnet:这是一个小例子:

       [HttpPost]
            public JsonResult LoadPackages(int page, int rows, string sord, string sidx, string PackageNumber)
            {
    
                liPackages = new List<PackageModel>();
                if (PackageNumber == "")
                {
                    liPackages = _packageRepository.LoadPackages((page - 1) * rows, rows, sord, sidx, out strTotalRecords);
                    long lCount = Convert.ToInt64(strTotalRecords);
                    return Json(new
                    {
                        total = Math.Ceiling((Decimal)lCount / (Decimal)rows),
                        page = page,
                        records = lCount,
                        rows = liPackages
                    },
                    JsonRequestBehavior.AllowGet);
                }
              }
    

    更新2:

    你能试试包括gridview:true

    更新3

    将方法类型从 GET 更改为 POST,如下所示:mType:POST

    【讨论】:

    • 我正在处理的这些网格将返回不少于 10k 条记录,所以我认为使用 loadonce 不是一个好主意!不幸的是,分页必须发生在服务器端!
    • 更新了..带有服务器端分页。是的,您显然必须使用服务器端分页。
    • @Anupam..您使用的是 java 还是 dotnet?
    • 我正在使用 PHP/MSSQL!分页也不是我的问题。网格在各个方面都可以正常工作(搜索/排序/分页)。只是页码没有以某种方式更新!如果我在该框中输入页码并按回车键,我会得到我想要的,如果我使用分页按钮它可以工作,但不会按应有的方式填充页码!
    • @Anupam..你可以看到我的网格记录,我正在发送总页数,当前页码,当前记录。如果您在 JSON 响应中缺少任何这些字段,则 Jqgrid 分页功能将不起作用。这只是因为,Jqgrid 使用我一直提到的这些特定字段是 Jqgrid 用于分页的一次。因为,它们不存在于您的 JSON 响应中。你得到零而不是适当的页码。希望这能让你明白你错过了什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2011-10-27
    相关资源
    最近更新 更多