如何在树形结构的子节点中设置顺序
时间:2020-03-05 18:48:36 来源:igfitidea点击:
我在CMS应用程序中具有页面的树表示形式。我了解如何将树持久化在数据库中。但是,我没有一个好办法:
A)在特定父页面下对子页面重新排序。
B)提供一个UI实现,允许用户更改顺序。
有什么建议?
解决方案
回答
A)我有一个类似的CMS应用程序,我在页面上存储了特定树的序数值并对该值进行排序-因为很多页面出现在完全不同的站点中,所以我必须针对页面/树组合维护序数。
B)我也想有一个更好的方法。当前,他们单击树视图中的节点,并且可以在主页屏幕中四处移动页面。我已经尝试使用Java脚本和其他解决方案进行拖放,但是如果没有很多用户的帮助,我的用户将永远无法使用它。我会对对此做出的回应感兴趣。
回答
更改订单本身将需要我们在数据库中与每个页面一起存储某种排序。仅当前的最高/最低值+ / 1可能是一个很好的起点。一旦有了该顺序,重新排序就成为交换两个值或者将一个页面的值更改为两个之间的情况(我猜可以使用浮点数,但是如果拆分过多,则可能需要重新编号)次)。
无论如何,一旦掌握了这些,就需要一个UI。我已经看到了一种非常简单的"用上/下交换"的方法,它可以是简单的Web链接或者AJAX调用。我们还可以将所有页面值呈现给用户,并要求他们根据需要重新编号。如果想花哨的话,拖放JavaScript可能是一个不错的方法。在这种领域中,我已经使用ExtJS和Mootools作为框架。如果我们不需要所有的Extjs小部件,我会说以后不要使用它了,请看一下Mootools Dynamic Sortables演示之类的东西。