在Coldfusion中显示父/子列表项的最佳方法是什么?该表包含id,title,parentID
我想在嵌套的无序列表中显示这些项目。
答案 0 :(得分:1)
这假设孩子们将通过故意将命令从ORDER BY语句中删除而从数据库返回。这是我用来制作和填充表格的SQL:
CREATE TABLE Testing
(
ID int,
Title varchar(25),
ParentID int
)
INSERT INTO Testing VALUES (1, 'Parent One', null)
INSERT INTO Testing VALUES (2, 'Parent Two', null)
INSERT INTO TESTING VALUES (3, 'First Child of One', 1)
INSERT INTO TESTING VALUES (4, 'Second Child of One', 1)
INSERT INTO TESTING VALUES (5, 'First Child of Two', 2)
INSERT INTO TESTING VALUES (6, 'Parent Three', null)
这是CFM代码。假设有些父母可能没有孩子,我做了LEFT OUTER JOIN。如果没有子节点,我没有添加检查以不显示子节点“标题”,但是简单的CFIF可以解决该示例。无论如何只是试图显示简短的代码,我认为这些代码可以回答您的问题并使您朝着正确的方向前进:
<cfquery name="myQuery" datasource="Testing">
SELECT C.ParentID, P.TITLE ParentTitle, C.ID ChildID, C.TITLE ChildTitle
FROM Testing P LEFT OUTER JOIN Testing C ON P.ID = C.ParentID
WHERE P.ParentID IS NULL
ORDER BY P.TITLE
</cfquery>
<cfoutput query="myQuery" group="ParentTitle">
Parent = #ParentTitle#<br />
<cfoutput>
Child=#ChildTitle#<br />
</cfoutput>
<hr />
</cfoutput>