我一直在使用ASP VBScript开发CMS,现在我正在尝试添加页面排序功能,以便管理员可以以他们喜欢的任何方式订购页面。
我尝试将 sort_id 列添加到数据库中,但由于页面有许多不同级别,因此它会让我失望。我还尝试使用 slug 列(即.sarent_id / id / id / id)来确定级别和父ID,但无法使其工作。
我需要能够对每个父ID及其中的子页面进行排序,并按照此顺序在页面上打印出来。
我正在寻找正确的方向,因为我一直在努力争取这个... ...
我正在使用Microsoft Access for DB,目前有列:
id, page_parent, page_name, page_content
答案 0 :(得分:1)
我在Access(2010)数据库中创建了一个表,它可以完成您想要的任务。这个概念是我需要能够存储可以附加属性的查找列表。它的工作方式是父ID(FK)指向表中其他地方的记录(对PK)。另外几个字段通过 .1.2.34。 n 。和节点级别的节点列表提供节点管理记录当前节点树中的级别(虽然可以通过计算列表中有多少个点来计算,点计数为1)。 节点列表会将树的所有步骤记录到最终的祖先。
通过添加以下更新前数据宏,整个过程自动完成......
然后可以通过在末尾添加 sort 字段(数字或其他)来执行排序。可以告诉任何查询主要在排序字段上排序,然后按字母顺序排序(在我的情况下) code 字段。
答案 1 :(得分:0)
如果您使用的是SQL Server,则可以使用递归查询返回树状结构,但Access中不支持此功能。
您可能必须添加自己的列,只要树结构发生更改,您就可以自己计算。
我会为显示顺序添加一个列(数字),然后允许在每个级别(父级和子级)设置它。
然后我将创建并填充第二列(varchar / string),该列存储树结构中的计算位置。这将包括每个父级的显示顺序值和此项目的显示顺序。
要按此列排序,您需要显示订单号具有固定长度。
此列的计算值的示例是(此示例中显示顺序的最大长度为5位):
00001/00010/00003
此示例项目位于其父级的第三个位置,该位置位于其父级的第十个位置,位于顶级的第一个位置。
如果您愿意,可以使用您想要的任何分隔符,也可以不使用分隔符。
然后,您可以更改SQL order by子句以使用此计算列。