Dojo — оставить/закрыть FilteringSelect в DGrid при входе

У меня есть сайт со сборкой таблицы с помощью Dojo/DGrid.

Некоторые столбцы сетки используют editor: dijit/form/FilteringSelect в качестве редактора, который отлично работает. Когда пользователь нажимает клавишу возврата, значение принимается, и редактор закрывается.

Другие столбцы той же сетки имеют определяемый пользователем renderCell, потому что URL-адрес вечного хранилища отличается в каждой строке:

function myCustomRenderCell(object, item, node) {
    node.innerHTML = '<div class="myClass"></div>';
    var filteringSelect = new FilteringSelect({
        label: 'myLabel',
        name: 'myName',
        displayedValue: item.myValue,
        store: new DstoreAdapter (
            new RestMemoryStore ({
                idProperty: 'id',
                target: 'myUrlToJsonData',
            })
        ),
        onChange: function(newValue) {
            var rowData = filteringSelect.store.get(newValue);
            var gridCell = this.domNode.offsetParent;
            var dataCell = grid.cell(gridCell);
            rowData.then(function(row){
                var eventObject = {
                    grid: this,
                    cell: dataCell,
                    oldValue: "",
                    value: row.name,
                    bubbles: true,
                    cancelable: true
                };
                on.emit(dataCell.element, 'dgrid-datachange', eventObject);
                grid.updateDirty(dataCell.row.id, 'myLabel', row.name);
            });
        }
    }, node.children[0]);
    filteringSelect._destroyOnRemove = true;
    filteringSelect.startup();
}

В отличие от того, что FilteringSelect по умолчанию упоминает в начале, этот не остается, поскольку использование нажимает клавишу возврата. Значение обрабатывается корректно. Но, кроме нажатия табуляции, которая помещает курсор в следующий пользовательский редактор, или использования мыши, нет никакого способа выйти из этого редактора.

Любые идеи, как настроить эту пользовательскую сборку FilteringSelect для отклонения при возврате, как это делает редактор по умолчанию в сетке?


person Tobi    schedule 22.06.2017    source источник
comment
посмотрите, можете ли вы удалить фокус на пользовательском   -  person bajji    schedule 06.07.2017
comment
спасибо, это сработало сейчас.   -  person Tobi    schedule 18.07.2017
comment
извини, откатись. Я попробовал фрагмент кода ниже. это работало до тех пор, пока я щелкал в отладчике, но не без того, чтобы я щелкал.   -  person Tobi    schedule 18.07.2017


Ответы (1)


попробуйте: добавьте обработчик событий для нажатия клавиши:

onKeyPress: function(event){
    if (event.charOrCode == keys.ENTER) {
        filteringSelect.set("focused", false);
    }
}

Спасибо Manjunatha за полезную подсказку.

person Tobi    schedule 18.07.2017