其中也碰到了一些bt的需求,結合項目把一些小技巧和大家分享一下(一個0 ColdFusion經驗的菜鳥被趕鴨子上架的搞了幾天心得,如果你認為簡單的可笑歡迎指教,亂噴黨請繞行)
先來點小菜
- ColdFusion使用ajax(ColdFusion返回json格式的數據)
找了一下coldfusion 8已經提供非常方便的api。
<cfinvoke?component="CsmDashboard"?method="getCsTableSum"?timerange="#timerange#"?
wherestr="#wherestr#"?returnVariable="tableSum"/>
<cfscript>
????writeOutput(SerializeJSON(#tableSum#));
</cfscript>
writeOutput(SerializeJSON(#tableSum#));這句會把查詢結果tableSum序列化成json格式傳給前臺。wherestr="#wherestr#"?returnVariable="tableSum"/>
<cfscript>
????writeOutput(SerializeJSON(#tableSum#));
</cfscript>
- ColdFusion不自動轉義參數
- ColdFusion字符串比較,以XX結尾
- 取整 NumberFormat
- 取list長度 listLen
- 取list第幾個ListGetAt
- 查詢結果字段列表 query.columnlis
- 查詢結果集某個字段的第幾行#query.columnname[i]#
以上只是為了再來一個大菜:動態列,表格。以下是簡化的代碼
?<cfset?nameList?=?"Calls,CALLSP,Duration,......................................................">
????
????????????<CFOUTPUT?query="csmSum">
??????????????<cfloop?index?=?"LoopCount"?from="1"?to="#ListLen(nameList)#">
????????????????<cfset?tmp?=NumberFormat(Evaluate("querylist."?&?ListGetAt(nameList,LoopCount)),0.00)>
??????????????????????????? <td?class="num">#tmp#</td>
??????????????</cfloop>
????????????</CFOUTPUT>
????
????????????<CFOUTPUT?query="csmSum">
??????????????<cfloop?index?=?"LoopCount"?from="1"?to="#ListLen(nameList)#">
????????????????<cfset?tmp?=NumberFormat(Evaluate("querylist."?&?ListGetAt(nameList,LoopCount)),0.00)>
??????????????????????????? <td?class="num">#tmp#</td>
??????????????</cfloop>
????????????</CFOUTPUT>
ColdFusion只能根據一個變量名稱取取查詢結果的字段,沒有根據位置或者字符串取,非常不爽。
核心就是用Evaluate根據一個字符串去動態構造一個變量,然后根據這個變量取出query中的列。
個這個字符串可以從一個list里面動態循環取出來再拼湊而成
而這個list可以從一些地方查詢或者傳遞過來。
所以表格就動態了起來。