Dojo - 在Enter上的DGrid中保留/关闭FilteringSelect

时间:2017-06-22 17:24:54

标签: javascript dojo dgrid dijit.form

我有一个带有Dojo / DGrid的表构建的站点。

网格的某些列使用editor: dijit/form/FilteringSelect作为编辑器,这非常有效。当用户点击返回键时,接受该值并关闭编辑器。

同一网格的其他列具有自定义的renderCell,因为unterdying存储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以在返回时关闭,就像网格中的默认编辑器一样?

1 个答案:

答案 0 :(得分:0)

试试:为按键添加事件处理程序:

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

感谢Manjunatha的有用提示。