B классе com.extjs.gxt.ui.client.core.Ext определена функция форматирования чисел number, но для её использования числа должны быть типа double и значения не должны быть равны 0. Мне понадобилось форматировать числа типа BigDecimal (или другого потомка Number). Для этого я добавил функцию bigdecimal в перечень функций форматирования. Привожу исходный код:
package com.devcity.dgp.gwt.client;
import com.google.gwt.i18n.client.NumberFormat;
import com.extjs.gxt.ui.client.widget.form.DualListField;
public class DialogCopyData {
public DialogCopyData() {
DualListField moneys = new DualListField();
addBigDecimalFormat();
moneys.getFromList().setDisplayField("money");
moneys.getFromList().setTemplate(getMoneyTemplate());
moneys.getToList().setDisplayField("money");
moneys.getToList().setTemplate(getMoneyTemplate());
}
private static String bigDecimalFormat(Number val) {
return NumberFormat.getFormat("###,###,##0.00").format(val);
}
private static native void addBigDecimalFormat() /*-{
$wnd.GXT.Ext.apply($wnd.GXT.Ext.util.Format, {
bigdecimal: function(val) {
return @com.devcity.dgp.gwt.client.DialogCopyData::bigDecimalFormat(Ljava/lang/Number;)(val);
}
});
}-*/;
private static native String getMoneyTemplate() /*-{
return ['<tpl for="."><div class="x-combo-list-item" role="option">',
'{money:bigdecimal}</div></tpl>'].join("");
}-*/;
}
Комментариев нет:
Отправить комментарий