代码之家  ›  专栏  ›  技术社区  ›  Michael Stone

在ColdFusion中动态更改数据的显示顺序

  •  0
  • Michael Stone  · 技术社区  · 16 年前

    使用 ColdFusion ,我正在尝试设置菜单和菜单项应用程序,您可以在其中更改菜单的顺序以及菜单中的菜单项。我发现了一些相对的东西,但这并不能完全起作用, http://wil-linssen.com/musings/entry/extending-the-jquery-sortable-with-ajax-mysql .

    所以,如果你在那里查看演示,那本质上就是我想要的,虽然每个子项下面的子项。

    我想我现在很难理解的是,在数据库中如何使用DisplayOrder列,然后更新会是什么样子。

    这基本上就是我需要做的:

    篮球(1类)

    • 衬衫

    • 袜子

    棒球(2类)

    • 蝙蝠

    • 帽子

    我需要能够将订单更改为我想要的任何类别及其项目,以便:

    棒球(1类)

    • 蝙蝠

    • 帽子

    篮球(2类)

    • 衬衫

    • 袜子

    我认为让我不快的是数据库的displayorder列中发生了什么。我假设他们的ID,但是您如何在SQL中正确排序?

    5 回复  |  直到 16 年前
        1
  •  2
  •   jarofclay    16 年前

    在下面的示例中,您需要数据库中的一列来存储要显示的项的顺序。当您按顺序查询项目时,使用数值有助于排序。例如:

    SELECT ProductCategories FROM MyTable ORDER BY DisplayOrder
    
        2
  •  1
  •   Henry    16 年前

    另一种方法是在json/wddx中序列化数组,并将其存储在数据库的varchar字段中。这样,顺序就得以保留,您可以轻松地按正确的顺序将其反序列化回数组。

        3
  •  0
  •   Ben Doom    16 年前

    我知道的最简单的方法是在数据库中创建父关系。每个子项都指向同一表中的父项。要获取父项,请从父项为空的排序列排序的表中选择*。然后,循环这些项目,获取其父项是当前顶级项目的项目。

    如果你在“菜单树”上专门搜索你想要的变化,或者寻找如何在数据库中构建树来获得更多的通用信息,你可以找到更多关于这个的信息。

        4
  •  0
  •   Leigh josh poley    16 年前

    因为它是一个菜单,所以您也可以使用 nested set model .它不像父/子模型那样直接(概念上)。但在我看来,它使操作一个中等规模的层次结构(如菜单)变得容易得多。

    我不确定您使用的是哪个数据库,但您可以找到一个好的 comparison of the two models (邻接和嵌套集)

    此外,至少还有一个 managing nested sets 在RiaFurGe.Org

        5
  •  0
  •   Michael Stone    16 年前

    没有人真正解决了它,但我最终通过解析可排序的序列化数组并在其中循环来使它正常工作。然后我决定它是一个类别还是一个项目。

    演示可以在这里找到: http://develop.michaelpstone.net/development/demos/treeView/stone/secure/agentsadmin.cfm 稍后,我将在一篇博客文章中对cffunction进行更深入的研究。