2015-12-02 2 views
1

Как я мог бы добавить валюты ограничение на djxDataGridColumn в Dojo макетеДобавление ограничения в 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

Определите столбец без типа клеток собственности

<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 валюты €:

enter image description here

В случае, если значение недействительно, это показывает «...».

+0

Сэр, если я хочу, чтобы ячейка отображала сообщение об ошибке подсказки, подобное тому, которое было указано выше –

+0

Вы использовали бы 'dijit.form.CurrencyTextBox' для отображения подсказки об ошибках, но я, к сожалению, не смог заставить это работать с XPages. –

+0

Привет, сэр, возможно ли, чтобы сетка приняла запись в валюте Германии с запятой, например, «465,87» вместо «456,87»? –

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

Несмотря на название блога, это просто яваскрипт и клиентской не специфичны для XPages. Вы также можете использовать додзе или jQuery для достижения того же.