cfgridcolumn掩码格式化数字

时间:2013-01-09 06:51:03

标签: extjs coldfusion cfgrid

根据文档,我应该能够使用mask属性来格式化我的列:

<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 个答案:

答案 0 :(得分: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);中的数字设置为要应用格式的列(网格中的列基于零)。

答案 1 :(得分:0)

显然&#34;货币&#34;支持你使用的掩码的类型只有格式=&#34; flash | applet&#34;仅限模式。

最简单的方法是在查询到达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>