【问题标题】:Using data local messed up the data sorting in jqGrid grouping使用本地数据搞砸了 jqGrid 分组中的数据排序
【发布时间】:2015-04-12 16:03:25
【问题描述】:

我正在使用 jqGrid 分组和本地数据。 我的数据已经排序了,所以我只想按照我的数据数组的顺序来显示。但是,我注意到 jqGrid 在我使用分组时实际上改变了我的数据顺序。 我可以在plunkr 中重现此问题。数据的顺序应该是1 2 3 4 5 6,但显示的是1 2 4 5 6 3

我目前使用的是 jqGrid 4.6.0。目前我能想到的解决方法是添加一个名为“rankOrder”的隐藏列,然后在loadComplete 上,根据rankOrder 对列进行排序。我的应用程序中有多个表,所以我想避免这样做(向每个表添加隐藏列)。有人知道更好的解决方法吗?

更新: 我注意到 free jqGrid 4.8.0 也会发生这种情况, 这是一个由用户 Oleg 创建的工作演示,我将它分叉以重现我的问题 here

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    您可以通过将data: myData, datatype: "local"替换为datastr: myData, datatype: "jsonstring"来解决初始加载本地数据时首页排序问题。另一方面,您使用本地分页数据。要显示下一页数据,jqGrid 必须对数据进行排序才能获得下一页。

    因此,我想您只需将sortname: "OrderID" 选项添加到网格中即可解决您的问题并显示按CustomerID 分组的数据另外按OrderID 排序。你应该留在原来的data: myData, datatype: "local"。我建议您在OrderID 中添加sorttype: "integer",以便在9 之后添加10,而不是在排序期间12 之间。

    【讨论】:

    • 像往常一样再次感谢 :) 只是一个问题,为什么在启用分组时它不保留数据的顺序?未启用分组时不会发生此问题(它保留数据的顺序)
    • @blenzcoffee:不客气!可能我的回答不够好​​。 本地分组的实现意味着在显示页面之前将总是进行排序。如果您只使用分组,那么排序将仅按一列完成。它可以改变行的原始顺序。通过包含额外的sortname: "OrderID",排序将按两列:分组列和sortname。如果您有多行且两列的值相同,则仍可以更改顺序。
    • 我现在明白了。谢谢!!
    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2017-12-14
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多