哇。我被要求为公司的树状菜单添加第3级。以下是我发现大约6个月前创建的内容。虽然它有效,但我无法再为它添加另一个cfloop hack。我的所有感受都告诉我这个错误的代码和重做。
我无法更改数据库,也无法在查询之外的任何其他内容中返回结果。现在你知道它的方式,我在这里有什么选择???
数据库中的每条记录都没有任何关系,下面的代码只是查看小部件的名称,如果它是父级,则可以根据以下代码计算:
widgetName的例子
1 =合规性:
2 =合规性:文档库:
3 =合规性:文档库:所有公司
所以上面说小部件2应该是2级。看看你将以非常糟糕的方式看到的代码......
<cfoutput>
<ul id="root" class="menu">
<cfloop array="#rc.widgets.getPageRecords()#" index="local.widgets">
<cfif listLen(local.widgets.getwidgetName(),":") eq 1>
<li>
<a href='javascript:void(0);' childid = '#local.widgets.getwidgetID()#' class='cat_close category'> </a>
<a href='javascript:void(0);'>#local.widgets.getwidgetName()# - #listLen(local.widgets.getwidgetName(),":")#</li></a>
<cfset wordToFind = local.widgets.getwidgetName()>
<ul id='#local.widgets.getwidgetID()#'>
<cfloop array="#rc.widgets.getPageRecords()#" index="local.widgets">
<cfif listLen(local.widgets.getwidgetName(),":") eq 2 AND #find(wordToFind,local.widgets.getwidgetName())#>
<li>
<a href='javascript:void(0);' childid = '#local.widgets.getwidgetID()#' class='cat_close category'> </a>
<a href='javascript:void(0);'>#local.widgets.getwidgetName()# - #listLen(local.widgets.getwidgetName(),":")#</li></a>
</li>
</cfif>
</cfloop>
</ul>
</cfif>
</cfloop>
</ul>
</cfoutput>
答案 0 :(得分:1)
我会使用递归函数来执行此操作,这将为您提供无限的未来兼容性。我不确定你使用的数据是什么样的,但似乎它应该是可能的。