cfgridcolumn mask для форматирования чисел

Согласно документации, я должен иметь возможность использовать атрибут 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 ответа

Решение

Мне нужно дать реквизиты @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); к столбцу, к которому вы хотите применить формат (столбцы в сетке начинаются с нуля).

Очевидно, тип валюты, который будет поддерживать используемую маску, доступен только в режиме 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>
Другие вопросы по тегам