哇。我被要求为一家公司的树形菜单添加一个第三级。下面是我发现的大约6个月前创建的。虽然它可以工作,但我不可能再给它添加另一个cfloop hack。我所有的感觉都告诉我这只是一个糟糕的代码,需要重做。
我不能更改数据库,也不能以查询以外的任何方式返回结果。现在你知道该怎么做了,我有什么选择?
数据库中的每个记录都没有关系,下面的代码只是查看小部件的名称,并根据以下属性确定它是否为父部件:
widgetName的示例
1=合规性:
2=合规性:文档库:
3=合规性:文档库:所有公司
所以上面说widget 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>发布于 2011-05-20 12:45:13
我会使用一个递归函数来做这件事,这将为你提供无限的未来兼容性。我不确定您正在处理的数据看起来是什么样子,但看起来应该是可能的。
https://stackoverflow.com/questions/6045649
复制相似问题