【问题标题】:How to implement server side sorting for jqGrid tree?如何为 jqGrid 树实现服务器端排序?
【发布时间】:2016-11-25 13:53:42
【问题描述】:

我使用 jqGrid v4.5.4(免费版)实现树形网格(treeGrid:truetreeGridModel:'adjacency'),一切正常。

现在我只想在子节点上实现服务器端排序,但从this question,我了解到排序总是在客户端本地为 treeGrid 完成。

是否有任何解决方法可以解决此问题并发出服务器请求进行排序并使用来自服务器的排序数据重新加载整个 treeGrid?

提前致谢!

【问题讨论】:

    标签: jquery jqgrid treegrid


    【解决方案1】:

    如果数据最初将被加载,则子节点将被包含在与从服务器返回的相同的顺序中。我可以建议您在折叠节点时实现删除子节点。您的主要问题是使用复古版本 4.5.4。如果您要更新到免费的 jqGrid 4.13.5,那么您可以通过包含 unloadNodeOnCollapse: true 选项来解决您的问题。它将在父节点折叠时自动删除所有子节点。甚至可以通过使用回调函数来实现更复杂的场景,它返回布尔值,而不是使用unloadNodeOnCollapse: true 选项。 The demo 展示了你是如何做到这一点的。

    复古版的使用使问题更加复杂。您甚至不能使用在折叠节点时调用的afterCollapseNodebeforeCollapseNode 回调,因为回调未在jqGrid 4.5.4 中实现。唯一的解决方法是 subclassing collapseNode 方法。您可以关注the old answer 来实现子类化。您可以先调用原始方法,然后再调用delTreeNode,但要小心,因为该方法也会删除折叠节点(delTreeNode 没有第二个选项允许只删除子节点)。因此,您必须保存折叠节点并在调用delTreeNode 后直接添加它,或者您可以调用getFullTreeNode,然后在跳过折叠节点的循环中调用delRowData

    您可以看到,在复古版本 jqGrid 4.5.4 中实现要求并不简单。因此,我建议您考虑更新到当前版本的免费 jqGrid。您将免费获得额外的性能优势。

    【讨论】:

    • 非常感谢@Oleg 的快速回复。一段时间以来,我们一直在考虑升级我们的 jqGrid 库。虽然我不确定它是否会解决服务器端排序,因为我希望在子节点上具有类似的常规 jqGrid 行为,即单击列标题,并且在应用排序时树可以扩展所有根节点(单击列标题) .
    • @Deb_:您是否一次加载所有带有子注释的节点?您当前的要求意味着以新的排序顺序重新加载当前从服务器加载的节点。它使与服务器的接口更加复杂。我不确定为什么您要在服务器端进行排序?您可以以任何方式自定义客户端排序
    • 是的,我一次加载所有带有子节点的节点。我们的假设是我们一开始不会有太多记录(
    • @Deb_:我很难理解你的问题,因为你没有发布任何代码或任何测试数据。您能否解释一下为什么您不想在客户端对数据进行排序?在本地排序期间,jqGrid 使用sorttypesortfunc,您可以将其定义为回调函数并实现自定义排序。或者,您可以使用onSortCol,它返回"stop" 以防止本地排序,您可以另外调用clearGridDatareloadGrid 从服务器重新加载数据。
    • 我很高兴,我的旧帖子也对您有所帮助。不客气!
    【解决方案2】:

    根据@Oleg 的输入,这就是我在 jqGrid 中为树实现服务器端排序所做的工作

    onSortCol 事件在单击可排序列后立即引发,更多关于this event here

    onSortCol: function (index, iCol, sortOrder) { $('#'+gridId).jqGrid('setGridParam', {postData:formData}).trigger('reloadGrid'); return 'stop'; //stops the sort processing }

    【讨论】:

      猜你喜欢
      • 2014-10-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 2011-09-09
      • 1970-01-01
      • 2019-12-28
      相关资源
      最近更新 更多