2013-01-09 23 views
1

根據該文件,我應該能夠使用面膜屬性格式化我的專欄:CFGRIDCOLUMN面膜格式數字

<cfgridcolumn name="salary" type="numeric" mask="$999,999"> 

我有我想說明一個工資總額爲

$100,000 
$80,000 
    $5,000 

任何想法爲什麼它不工作?

用於下面測試的完整代碼片段。

<cfscript> 
     rs = QueryNew('salary', 'integer'); 
     QueryAddRow(rs,3); 
     QuerySetCell(rs, 'salary', '100000', 1); 
     QuerySetCell(rs, 'salary', '80000', 2); 
     QuerySetCell(rs, 'salary', '5000', 3); 
</cfscript> 

<cfform> 
    <cfgrid format="html" name="demo" query="rs"> 
     <cfgridcolumn name="salary" type="numeric" mask="$999,999"> 
    </cfgrid> 
</cfform> 

回答

2

我需要給道具@Henry對於這個答案,我發現here並應用到你的情況。我以前沒有使用過,但是我測試了它,它確實有效(使用CF9)。請參閱我發現的參考this other。有趣的東西。反正...

對於您的問題,試試這個代碼:

<html> 
    <head><title>Test</title></head> 
<body> 
<cfsavecontent variable="formatGridInit"> 
<script language="javaScript"> 
formatgrid = function() { 
    var myFormatter = Ext.util.Format.numberRenderer('$000,000'); 
    var mygrid = ColdFusion.Grid.getGridObject('demo'); 
    var cm = mygrid.getColumnModel(); 
    cm.setRenderer(0, myFormatter); 
    mygrid.reconfigure(mygrid.getStore(),cm); 
}; 
</script> 
</cfsavecontent> 
<cfhtmlhead text="#formatGridInit#"> 
<cfset ajaxOnLoad("formatgrid")> 

<cfscript> 
     rs = QueryNew('salary', 'integer'); 
     QueryAddRow(rs,3); 
     QuerySetCell(rs, 'salary', '100000', 1); 
     QuerySetCell(rs, 'salary', '80000', 2); 
     QuerySetCell(rs, 'salary', '5000', 3); 
</cfscript> 

<cfform> 
    <cfgrid format="html" name="demo" query="rs"> 
     <cfgridcolumn name="salary" type="numeric"> 
    </cfgrid> 
</cfform> 
</body> 
</html> 

注意 - 確保你的HTML有<head></head>爲了使<cfhtmlhead>工作。

備註 - 此代碼中的網格名稱var mygrid = ColdFusion.Grid.getGridObject('demo');必須與您的網格名稱相匹配。

注意 - 將此代碼cm.setRenderer(0, myFormatter);中的數字設置爲您要將格式應用到的列(網格中的列基於零)。

0

顯然,支持所用掩碼的「貨幣」類型只能在格式=「flash | applet」模式下使用。

最簡單的方法是在查詢到CFGRID之前格式化查詢中的數據。另外,您可以使用ColdFusion只是格式化這些細胞:

<cfscript> 
     rs = QueryNew('salary', 'varchar'); 
     QueryAddRow(rs,3); 
     QuerySetCell(rs, 'salary', '100000', 1); 
     QuerySetCell(rs, 'salary', '80000', 2); 
     QuerySetCell(rs, 'salary', '5000', 3); 
</cfscript> 

<!--- Loop Over Query and Reformat Salary ---> 
<cfloop query="rs" startrow="1"> 
    <cfscript> 
     QuerySetCell(rs, 'salary', dollarFormat(salary), currentrow); 
    </cfscript> 
</cfloop> 

<cfform> 
    <cfgrid format="html" name="demo" query="rs"> 
     <cfgridcolumn name="salary"> 
    </cfgrid> 
</cfform> 
+1

這不會工作,它會打破排序,因爲它將作爲字符串返回。它需要在網格側完成。 –

+0

和SQL格式不是一個選項?或者你需要在網格中排序? – BKK

+0

SQL格式化也會破壞排序 –