2015-12-02 62 views
1

我又怎能貨幣約束添加到djxDataGridColumn在道場佈局添加約束Dojo數據網格列的XPages

Programmaticly我會用:

{ 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"}); 
    } 

錯誤消息時字符串輸入 Error message when String is entered

+0

你可以添加更多關於你在做什麼的一般信息嗎?我很困惑用戶在網格中輸入什麼內容,特別是因爲你的列被設置爲editable =「false」。 –

+0

editable =「true」。我上面有更新,我希望單元格只接受數字或分數,沒有字符串 –

+0

您可以將可以鍵入的字符限制爲0-9和小數點分隔符(對於美國,某些國家/地區使用)。這是鍵盤按鍵有限的不同方法,但該值未經驗證。你想讓我做出一個答案來證明這一點嗎? –

回答

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'}轉換和顯示數值爲歐元貨幣€:

enter image description here

萬一值無效顯示「...」。

+0

先生如果我想單元格顯示像上面的那樣的提示錯誤消息 –

+0

你會使用'dijit.form。用於顯示錯誤消息提示的「CurrencyTextBox」小部件,但不幸的是,我無法將它與XPage一起運行。 –

+0

您好先生,可以讓網格接受德語貨幣輸入,逗號爲「465,87」而不是「456.87」嗎? –

0

西蒙,

可以限制鍵盤鍵允許用戶鍵入其阻止他們進入字母字符。此選項不驗證數字內容,如果需要,您必須單獨執行此操作。

您將需要創建一個在onkeypress事件上起作用的clientide函數。

的代碼將類似於此:

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來完成同樣的事情。