ColdFusion实用技巧

ColdFusion实用技巧
最近做了一个ColdFusion的项目,收益颇多。

其中也碰到了一些bt的需求,结合项目把一些小技巧和大家分享一下(一个0 ColdFusion经验的菜鸟被赶鸭子上架的搞了几天心得,如果你认为简单的可笑欢迎指教,乱喷党请绕行)

先来点小菜

  • ColdFusion使用ajax(ColdFusion返回json格式的数据)
用惯了jquery,直接无视ColdFusion的ajax。既然用jquery,当然希望后台返回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格式传给前台。

  • ColdFusion不自动转义参数
PreserveSingleQuotes(name),ColdFusion为了安全,会自动转义参数中的特殊字符。特殊情况下我们不希望他这样做,就可以用上面的方法。

  • ColdFusion字符串比较,以XX结尾
< cfif  Right(ListGetAt(nameList,LoopCount),2) eq "sp" >
  • 取整 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 >

ColdFusion只能根据一个变量名称取取查询结果的字段,没有根据位置或者字符串取,非常不爽。

核心就是用 Evaluate根据一个字符串去动态构造一个变量,然后根据这个变量取出query中的列。
个这个字符串可以从一个list里面动态循环取出来再拼凑而成
而这个list可以从一些地方查询或者传递过来。
所以表格就动态了起来。





你可能感兴趣的:(ColdFusion实用技巧)