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

Adding constraint to Dojo Data Grid Column Xpages

如何在 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"});
    }

输入字符串时的错误信息

西蒙,

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

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

代码类似于:

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

此示例允许数字以及退格键和删除键。如果您想允许分数分隔符,请修改它以允许它。查找键码的一种简单方法是使用 http://keycode.info/

这是一篇博客 post 我上个月写的关于这个主题的博客:http://notesspeak.blogspot.com/2015/11/limiting-keyboard-input-in-xpages.html

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

定义不带 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'} 将值转换并显示为欧元货币 €:

如果值无效,则显示“...”。