2015-04-12 36 views
0

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

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

更新: 我注意到这也与免费的jqGrid 4.8.0,这里是由用户创建奥列格工作演示发生,我不分叉它重现我的问题here

回答

1

可以解决的问题在初始加载本地数据期间通过用datastr: myData, datatype: "jsonstring"代替data: myData, datatype: "local"对第一页进行排序。另一方面,您使用本地分页的数据。要显示数据的下一页jqGrid必须对数据进行排序以获取下一页。

因此我想,你只需要添加sortname: "OrderID"选项电网解决您的问题,并显示由CustomerID分组的数据,并通过OrderID另外排序。你应该保持原来的data: myData, datatype: "local"。我建议您在排序过程中在OrderID中添加sorttype: "integer"以在9之后具有10,而不是在12之间。

+0

如往常一样再次感谢:)只是一个问题,当启用分组时,它为什么不保留数据的顺序?这个问题在没有启用分组时不会发生(它保留了数据的顺序) – blenzcoffee

+0

@blenzcoffee:不客气!我的回答可能不够好。 *本地分组*的实现意味着在显示页面之前,将始终创建分页。如果您只使用分组,则只能按一列进行排序*。它可以改变行的原始顺序。通过包含额外的'sortname:“OrderID”'排序将由**两列**:分组列和'sortname'。如果您有多个行的两列值相同,那么订单仍可以更改。 – Oleg

+0

我现在看到。谢谢!! – blenzcoffee