向Dojo数据网格列Xpages添加约束

时间:2015-12-02 07:20:24

标签: javascript dojo xpages dijit.form

如何在Dojo布局中添加货币约束到djxDataGridColumn

我将以编程方式使用:

{ name: 'Amount', field: 'col5', formatter: formatCurrency, constraint: {currency: 'EUR'}, widgetClass: HorizontalSlider, width: 10}

但我怎样才能在XPages中实现它:

<xe:djxDataGridColumn id="djxDataGridColumn10" editable="true" label="Amount " field="Amount " width="50px" cellType="dojox.grid.cells._widget"
formatter="formatCurrency">
</xe:djxDataGridColumn>

我需要能够在编辑网格时验证列输入

function formatCurrency(value){
        return isNaN(value) ? '...' : currency.format(value, {currency: "EUR"});
    }

输入String时出现错误消息 Error message when String is entered

2 个答案:

答案 0 :(得分:1)

定义没有cellType属性的列

  <xe:djxDataGridColumn
     id="djxDataGridColumn10"
     editable="true"
     label="Amount "
     field="Amount"
     width="50px"
     formatter="formatCurrency">
  </xe:djxDataGridColumn>

并将您的CSJS代码更改为

require(["dojo/currency"]);
function formatCurrency(value){
    return isNaN(value) ? '...' : dojo.currency.format(value, {currency: 'EUR'});
}

约束{currency: 'EUR'}转换并显示值为EUR currency€:

enter image description here

如果值无效,则显示&#34; ...&#34;。

答案 1 :(得分:0)

西蒙,

您可以限制允许用户键入的键盘键,以防止他们输入字母字符。此选项不验证数字内容,如果需要,您必须单独执行此操作。

您需要创建一个作用于onkeypress事件的客户端函数。

代码看起来与此类似:

var keyCode = event.keyCode;
if((keyCode >= 48 && keyCode <= 57) || keyCode == 8 || keyCode == 46){
   event.returnValue = true;
}else{
   event.returnValue = false;
}

此示例允许数字以及退格和删除。如果要允许分数分隔符,则修改它以允许它。查找密钥代码的简便方法是使用http://keycode.info/

以下是我上个月就此主题撰写的一篇博文:http://notesspeak.blogspot.com/2015/11/limiting-keyboard-input-in-xpages.html

尽管有博客帖子标题,但这只是客户端javascript而不是特定于XPages。您也可以使用dojo或jQuery来完成同样的事情。