我有一个 CMS 应用程序中页面的树状表示。我了解如何将树保存在数据库中。但是,我没有一个好的方法:
A) 对特定父页面下的子页面重新排序。
B) 提供允许用户更改顺序的 UI 实现。
有什么建议么?
A)我有一个类似的 CMS 应用程序,我为特定树的页面存储了一个序数值并按此值排序——因为我的许多页面出现在完全不同的站点中,我必须针对页面/树维护序数组合。
B)我也想要一个更好的方法来做到这一点。目前,他们单击树视图中的节点,在主页面屏幕中,他们可以移动页面。我尝试过使用 java 脚本和其他解决方案进行拖放,但如果没有大量的手,我的用户永远无法使用它。我会对这个问题的回复感兴趣。
更改订单本身将需要您在数据库中存储某种排序以及每个页面。只是当前的最高/最低值 +/- 1 可能是一个很好的起点。一旦你在那里得到了排序,重新排序就变成了交换两个值或将一个页面的值更改为另外两个页面之间的情况(我猜你可以使用浮点数,但如果你拆分它太多,你可能需要重新编号次)。
无论如何,一旦你有了它,你就需要一个 UI。我见过一种非常简单的“用上面/下面的方法交换这个”方法,它可以是一个简单的 Web 链接或 AJAX 调用。您还可以向用户显示所有页面值,并要求他们根据需要重新编号。如果您想变得花哨,JavaScript 拖放可能是一个不错的方法。我使用ExtJS和Mootools作为这类领域的框架。如果你不需要所有的 Extjs 小部件,我会说以后远离它,看看 Mootools Dynamic Sortables demo之类的东西。