У меня есть сайт со сборкой таблицы с помощью 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 для отклонения при возврате, как это делает редактор по умолчанию в сетке?