使用ColdFusion,我正在尝试设置菜单和菜单项应用程序,您可以在其中更改菜单的顺序以及菜单中的菜单项。我找到了相对的东西,但它没有完全帮助,http://wil-linssen.com/musings/entry/extending-the-jquery-sortable-with-ajax-mysql。
因此,如果您在那里查看演示,那基本上就是我想要的,尽管每个主要项目下面都有子项目。
我想我很难理解的是在数据库中使用displayOrder列的内容,然后是更新的样子。
这基本上是我需要做的事情:
篮球(第1类)
鞋
衬衫
袜子
棒球(第2类)
蝙蝠
球
帽子
我需要能够将订单更改为我想要的两个类别及其项目,以便它可以是:
棒球(1类)
蝙蝠
帽子
球
篮球(第2类)
衬衫
袜子
鞋
我认为让我失望的是数据库的displayOrder列中的内容。我假设他们的id,但那么你如何在SQL中正确排序?
答案 0 :(得分:2)
按照示例,您需要在数据库中使用一列来存储要显示的项目的顺序。在按顺序查询项目时,使用数值有助于排序。一个例子可能是:
SELECT ProductCategories FROM MyTable ORDER BY DisplayOrder
答案 1 :(得分:1)
另一种方法是在JSON / WDDX中序列化数组并存储在DB中的varchar字段中。这样,订单就会被保留,您可以轻松地以正确的顺序将其反序列化回数组。
答案 2 :(得分:0)
我所知道的最简单的方法是在数据库中创建父关系。您将使每个子项指向同一表中的父项。要获取父项,请从排序列中排序的表中选择*,其中parent为null。然后,循环遍历这些项目,获取其父项是当前顶级项目的项目。
如果您在“菜单树”中搜索特定内容的google / bing /其他内容,您可以找到更多相关信息,或者查找如何在数据库中构建树以获取更多通用信息。
答案 3 :(得分:0)
由于它是一个菜单,您可能还会考虑使用nested set model。它不像父/子模型那样直截了当(概念上)。但它使IMO更容易操纵适度大小的层次结构(如菜单)。
我不确定您使用的是哪个数据库,但您可以在MySQL网站上找到一个好的comparison of the two models(邻接和嵌套集)
riaforge.org
还有至少一个managing nested sets的cfc答案 4 :(得分:0)
没有人真正解决它,但我最终通过解析可排序的序列化数组并循环遍历它来使其正常工作。然后我确定它是一个类别还是一个项目。
可以在这里找到演示:http://develop.michaelpstone.net/development/demos/treeView/stone/secure/agentsadmin.cfm我将在稍后的博客文章中提供更深入的内容。