万卷书>>电脑书籍>>网页制作>>网页制作软件使用>>ColdFusion 初级教程

WANJUANSHU.COM

用CFTREE建立树控件

树控件适于用来显示有层次的信息。利用CFTREE,你可以根据数据库查询结果建立树形显示结构。你用CFTREEITEM建立树形结构的各个分支,你还可以选择使用六种内建的图标来代表树控件中的各个分支。


 

根据查询结果建立树形结构。


 

下面的简单例子根据CFQUERY的查询结果建立树形显示结构,它使用了最少的CFTREE标签和CFTREEITEM标签,演示了如何用CFML语言方便地建立树形结构。


 

首先,利用查询从数据源选择数据:


 

<CFQUERY NAME="Engineering" DATASOURCE="cfsnippets">


 

SELECT FirstName +’ ‘+ LastName AS FullName


 

FROM EMPLOYEES


 

</CFQUERY>


 

然后,利用查询结果构建树控件:


 

<CFFORM NAME="form1" ACTION="submit.cfm"


 

METHOD="Post">


 

<CFTREE NAME="tree1" REQUIRED="yes"


 

HSCROLL="no" vSCROLL="yes">


 

<CFTREEITEM VALUE=FullName


 

QUERY="Engineering"


 

QUERYASROOT="yes"


 

IMG="folder,document">


 

</CFTREE>


 

</CFFORM>


 

此例产生的树控件如下图所示:


 


 

这个例子用QUERYASROOT属性指定将查询名(Engineering)作为树控件的根。QUERYASROOT属性的值可是Yes/No或者你想显示为查询结果的根的名字。


 

你可以根据几个不同的查询,利用来自不同数据源的数据建立一个树控件,使用QUERYASROOT,你可以为每个查询指定一个根(ROOT)。


 

分组显示查询结果


 

假设你想根据员工所在的部门来组织员工信息,并显示一个能反映部门与员工关系的完整列表。在这种情况下,ColdFusion提供了一个非常简单的方法,在CFTREE中显示排序的CFQYERT查询结果。你只需在CFTREEITEM的VALUE属性中指定用逗号隔开的字段名,ColdFusion就会认为你希望树控件能反映SQL语句的排序结果。如下例:


 

<!--- CFQUERY with an ORDER BY clause --->


 

<CFQUERY NAME="myquery" DATASOURCE="cfsnippets">


 

SELECT DEPARTMENT, FirstName + ??+ LastName


 

AS FullName


 

FROM EMPLOYEES


 

ORDER BY DEPARTMENT


 

</CFQUERY>


 

<!---Build the tree control --->


 

<CFFORM NAME="form1" ACTION="submit.cfm"


 

METHOD="Post">


 

<CFTREE NAME="tree1"


 

HSCROLL="no"


 

VSCROLL="no"


 

BORDER="yes"


 

HEIGHT="350"


 

REQUIRED="yes">


 

<CFTREEITEM VALUE="Department, FullName"


 

QUERY="myquery"


 

QUERYASROOT="Department"


 

IMG="cd,folder">


 

</CFTREE>


 

<BR><INPUT TYPE="Submit" VALUE="Submit">


 

</CFFORM>


 

注意IMG属性与VALUE属性之间的对应。第一个字段, Department,使用ColdFusion的内建图标CD。第二个字段,FullName,使用另一个内建图标folder。如果IMG属性被省略,则ColdFusion为树控件的每一级都使用folder图标。此例的显示结果如下图所示:


 


 

如果用户选择了树控件中的“Peter Jacobsen”一项,则由Coldfusoion返回下面的form变量:


 

form treel node=peter Jacobsen


 

form treel path=pepartment\sales\peter Jacobsen


 

注意:后面关于树控件的例子都使用上面的CFQUERY的查询结果,此查询的数据源是一个Microsoft Access数据库cfsnippets.mdb,要运行这些关于树控件的例子,只需引用“myquery”即可。


 

CFTREE表单变量


 

在CFTREE标签中将REQUIRED 属性设为YES,可以强制用户必须从树控件中选择一项,无论是否设置REQUIRED属性,ColdFusion都返回两个Form变量:


 

· form.treename.rode——返回用户所选的节点


 

· form.treename.path——返回用户选择的节点的完整路径,其格式为 root\node1\node2\node_n\value


 

只有当你将CFTREE的COMPLETEPATH属性设置为YES时,返回的路径才包括root部分,否则路径将从第一个节点开始。


 

CFTREE的输入检查


 

CFTREE不支持VALIDATE属性,但你可以用REQUIRED属性强制用户对树控件作出选择。另外,你可以在ONVALIDATE属性中指定一个JavaScript函数,由该函数执行输入检查。


 

构造树控件


 

用CFTREE可以建立非常复杂的树控件,而知道如何指定多个CFTREEITEM之间的关系将有助于处理甚至是最复杂的树控件结构。


 

例子:一级树控件


 

下面的例子用一个根和多个项建立了一个树控件:


 

<CFFORM NAME="form1" ACTION="submit.cfm">


 

<CFTREE NAME="tree1">


 

<CFTREEITEM VALUE="FullName"


 

QUERY="myquery"


 

QUERYASROOT="Department">


 

</CFTREE>


 

<BR><INPUT TYPE="submit" VALUE="Submit">


 

</CFFORM>


 

这个例子的显示结果为:


 


 

例子:多级树控件


 

构造一个树形结构时,你通过为树的每一项指定一个“父”来定义树的结构。在下面的这个例子中,除最顶级以外,树的每一项都指定了一个“父”,PARENT属性使你可以定义树控件的各元素之间关系。


 

<CFFORM NAME="form1" ACTION="cfform_submit.cfm"


 

METHOD="Post">


 

<CFTREE NAME="tree1" HSCROLL="no" VSCROLL="no"


 

BORDER="no">


 

<CFTREEITEM VALUE="Divisions">


 

<CFTREEITEM VALUE="Development"


 

PARENT="Divisions" IMG="folder">


 

<CFTREEITEM VALUE="Product One"


 

PARENT="Development">


 

<CFTREEITEM VALUE="Product Two"


 

PARENT="Development">


 

<CFTREEITEM VALUE="GUI"


 

PARENT="Product Two" IMG="document">


 

<CFTREEITEM VALUE="Kernel"


 

PARENT="Product Two" IMG="document">


 

<CFTREEITEM VALUE="Product Three"


 

PARENT="Development">


 

<CFTREEITEM VALUE="QA"


 

PARENT="Divisions" IMG="folder">


 

<CFTREEITEM VALUE="Product One"


 

PARENT="QA">


 

<CFTREEITEM VALUE="Product Two" PARENT="QA">


 

<CFTREEITEM VALUE="Product Three"


 

PARENT="QA">


 

<CFTREEITEM VALUE="Support"


 

PARENT="Divisions" IMG="fixed">


 

<CFTREEITEM VALUE="Product Two"


 

PARENT="Support">


 

<CFTREEITEM VALUE="Sales"


 

PARENT="Divisions" IMG="cd">


 

<CFTREEITEM VALUE="Marketing"


 

PARENT="Divisions" IMG="document">


 

<CFTREEITEM VALUE="Finance"


 

PARENT="Divisions" IMG="element">


 

</CFTREE>


 

</CFFORM>


 

这个例子的显示结果为:


 


 

CFTREE中的图象名


 

当你使用TYPE=“Image”属性时,ColdFusion会试图显示一个与字段值相应的图象,该图象可以是ColdFusion的内建图象,也可以是你自选的图象,自选图象应位于cfide\classes目录或其子目录下,并应用相对的URL来引用。


 

内建的图象包括:


 

· cd


 

· computer


 

· document


 

· element


 

· folder


 

· floppy


 

· fixed


 

· remote


 

在CFTREEITEM中使用逗号


 

逗号用来分隔CFTREEITEM, VALUE, DISPLAY, IMG和HREF等属性的值。在CFTREE中你用逗号来分隔字段名。如下例所示,VALUE属性指定了查询所返回的两个字段名:


 

<CFTREE NAME="tree1" VSCROLL="no"


 

HSCROLL="no" BORDER="no">


 

<CFTREEITEM VALUE="Department,LastName"


 

QUERY="myquery"


 

QUERYASROOT="Company B"


 

IMG="folder,folder,document"


 

PARENT="Company B">


 

</CFTREE>


 

在这个树控件中,Department和LastName是查询返回的两个字段。这个树根据不同的部门(Department)名字来分组显示LastName的值(假设查询中包含了相应的order by子句)。还应注意的是IMG属性的值。由于这个树控件共有三级,你可以通过用逗号分隔的图象名,为每一级指定一个内建的或定制的图象。

 
上一页 WanJuanShu.COM 下一页
WANJUANSHU.COM 万卷书