代码之家  ›  专栏  ›  技术社区  ›  Sam McAfee

如何设置树结构子节点的顺序

  •  2
  • Sam McAfee  · 技术社区  · 16 年前

    我有CMS应用程序中页面的树表示。我了解如何在数据库中持久化树。但是,我没有一个好方法:

    a)重新排序特定父页下的子页。
    b)提供允许用户更改订单的UI实现。

    有什么建议吗?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Vineet Jain    7 年前

    更改顺序本身需要将某种排序与数据库中的每个页面一起存储。只有当前的最高/最低值+/-1可能是一个很好的起点。一旦你有了这样的顺序,重新排序就变成了交换两个值或将一个页面的值更改为两个其他页面之间的情况(我猜你可以使用浮动,但如果你拆分太多次,你可能需要重新编号)。

    不管怎样,一旦你得到了它,你就需要一个用户界面。我见过一个非常简单的“用上面/下面的方法交换这个”方法,它可以是一个简单的Web链接或Ajax调用。您还可以将所有页面值呈现给用户,并要求他们根据需要重新编号。如果你想得到幻想,JavaScript拖放可能是一个很好的方法。我已经用过 ExtJS Mootools 作为这类领域的框架。如果你不需要所有的extJS小部件,我会说以后远离它,看看类似moooltools的东西。 Dynamic Sortables demo .

        2
  •  0
  •   Phil Bennett    16 年前

    a)我有一个类似的CMS应用程序,我为一个特定树的页面存储一个有序值,并按这个值排序——因为我的许多页面出现在完全不同的站点上,我必须根据页面/树的组合维护有序数。

    b)我也希望有更好的方法。当前,他们单击树视图中的节点,在主页面屏幕中,他们可以移动页面。我曾尝试用Java脚本和其他解决方案拖放,但我的用户在没有大量手持的情况下无法使用它。我会对这个问题的回答感兴趣的。