проблема встроенного редактора ячеек данных - PullRequest
1 голос
/ 31 марта 2010

При использовании встроенного редактора ячеек в моей таблице данных я хочу округлить значение до 10 кратных

Это мой код:

mydatatable.subscribe("cellDblclickEvent",datatable_DetailsCommande.onEventShowCellEditor);  

var onCellEdit = function(oArgs) { 

                    var oColumn=oArgs.editor.getColumn();
                    var column=oColumn.getKey();
                    var oRecord = oArgs.editor.getRecord();
                    var newValue=oRecord.getData(column);
                    var row = this.getRecord(oArgs.target);


                    // calculate the  modulo
                    n = newValue % 10;


                    if(n!=0)
                    {
                        newValue=parseInt(newValue);
                        oRecord.setData(column,eval(newValue+(10-n)));
                    } 


                }
mydatatable.subscribe("editorSaveEvent", onCellEdit); 

Результат функции:

После двойного щелчка в ячейке я, например, меняю значение на 17 и нажимаю кнопку Сохранить. Я хочу, чтобы в моей ячейке с данными было 20, а у меня - 17. После второго двойного щелчка в ячейке с данными я получаю 20 в строке сотовый редактор.

Как поместить округленное значение в мою ячейку с данными?

С уважением,

1 Ответ

1 голос
/ 31 марта 2010

При создании встроенного редактора в определении столбца вы можете указать валидатор, который будет выполнять округление:

new YAHOO.widget.TextboxCellEditor({
    validator: function(data) {
        // Convert to a number
        var number = data * 1;

        if (!YAHOO.lang.isNumber(number)) {
            return undefined;
        }

        var n = number % 10;
        return n === 0 ? number : number + 10 - n;
    }
});
...