【问题标题】:Adding constraint to Dojo Data Grid Column Xpages向 Dojo 数据网格列 Xpages 添加约束
【发布时间】:2015-12-02 07:20:24
【问题描述】:

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

输入字符串时的错误信息

【问题讨论】:

  • 你能添加更多关于你在做什么的一般信息吗?我很困惑用户在网格中输入的位置,特别是因为您的列设置为 editable="false"。
  • editable="true"。我上面有更新,我希望单元格只接受数字或分数而不接受字符串
  • 您可以将可以键入的字符限制为 0-9 和小数点分隔符(对于美国,某些国家/地区使用 ,)。这是一种不同的方法,其中键盘键受到限制,但值未经过验证。你想让我做一个表明这一点的答案吗?
  • 是的,那太好了

标签: javascript dojo xpages dijit.form


【解决方案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'} 将值转换并显示为欧元货币€:

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

【讨论】:

  • 先生,如果我想让单元格显示像上面那样的提示错误消息怎么办
  • 您可以使用 dijit.form.CurrencyTextBox 小部件来显示错误消息提示,但很遗憾,我还无法使用 XPages 运行它。
  • 您好先生,是否可以让网格接受带有逗号的德国货币输入,例如“465,87”而不是“456.87”?
【解决方案2】:

西蒙,

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

您需要创建一个作用于 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 来完成同样的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2016-07-08
    相关资源
    最近更新 更多