1

根据文档,我应该能够使用 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>
4

2 回答 2

2

对于我在此处找到并应用于您的案例的这个答案,我需要向@Henry 提供支持。我以前没有使用过这个,但我测试过它并且它确实有效(使用 CF9)。请参阅我发现的其他参考资料。有趣的东西。反正...

对于您的问题,请尝试以下代码:

<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);中的数字设置为要应用格式的列(网格中的列从零开始)。

于 2013-01-09T14:12:53.843 回答
0

显然,支持您使用的掩码的“货币”类型仅在 format="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>
于 2013-01-09T07:19:53.310 回答