2015-07-21 75 views
0

我一直在ASP VBScript中开发CMS,现在正在尝试添加页面排序功能,以便管理员可以以他们喜欢的任何方式排列页面。排序CMS页面

我曾尝试在数据库中添加一个sort_id列,但由于有许多不同级别的页面,因此它将我抛弃。我也尝试使用slu 012列(即parent_id/id/id/id)来确定级别和父级ID,但无法使其工作。

我需要能够对每个父ID以及其中的子页面进行排序,并根据此顺序将其打印出来。

我要寻找一个在正确的方向上推,因为我一直在这一个现在一边挣扎......

我使用DB Microsoft Access和目前拥有的列:

id, page_parent, page_name, page_content 

回答

1

我在Access(2010)数据库中创建了一个表,它几乎可以完成您想要的任务。这个概念是我需要能够存储可能具有属性的查找列表。它的工作方式是父母身份(FK)将指向表中其他地方(到PK)的记录。通过节点列表.1.2.34的形式提供额外的几个字段来提供节点管理。 n节点级别在当前节点的树中记录级别(尽管可以通过计算列表中有多少个点,点数为1来跳过此级别)。 节点列表将记录所有步骤备份树到最终的祖先。

enter image description here

通过将以下更新之前宏观数据的整个过程都是自动化的......

enter image description here

排序然后可以通过添加排序场进行(数字或任何)到最后。任何查询可以被告知主要在排序字段,然后按字母顺序排列(在我的情况下)代码字段。

0

如果您使用的是SQL Server,则可以使用递归查询来返回类似于结构的树,但这在Access中不受支持。

您可能需要添加自己的列,每当树结构发生变化时您都可以自行计算。

我会为显示顺序添加一列(数字),然后允许在每个级别(父母和子女)设置它。

然后,我会创建并填充第二列(varchar/string),它将计算的位置存储在树结构中。这将包括每个父母的显示订单值和该项目的显示顺序。

要按此列排序,您需要显示订单号具有固定长度。

此列的计算的值的一个实例是(显示顺序5位在本实施例中的最大长度):

00001/00010/00003 

该实施例产品在第三位置的它的父,这是在第十位置它的父母,这是在顶级的第一位。

如果您愿意,您可以使用任何分隔符或不分隔符。

然后你可以改变你的SQL order by子句来使用这个计算列。