1
哇。我被要求爲公司的樹形菜單添加第三層。下面是我發現大約6個月前創建的。雖然它有效,但我不會再添加其他cfloop攻擊。我所有的感受都告訴我這個糟糕的代碼並重做。錯誤代碼警告:爲嵌套菜單分組數組
我不能更改數據庫,也不能將結果返回到查詢以外的任何其他位置。現在你知道它的方式了,我在這裏有什麼選擇?
在數據庫中的每個記錄有沒有關係,下面只是代碼看起來在widget的名字和作品,如果它是一個家長或不基於:widgetName
例子=遵守:
2 =標準:文檔庫:
3 =遵守:文檔庫:所有企業
所以AB奧夫說,小工具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>
rc.widgets.getPageRecords()是做什麼的?取決於,我可以想出幾種方法來清理並提高效率。請提供查詢是否有權訪問它(如果它在CF中,而不是存儲過程)以及生成陣列和列表的方式。 – 2011-05-18 14:52:40