加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

道场 – Dgrid专注于细胞

发布时间:2020-12-16 21:18:33 所属栏目:百科 来源:网络整理
导读:我使用dgrid以网格格式显示数据,它有四列.一切都是可编辑的 我用以下方式声明它. table id="grid" data-dojo-type="dgrid.CustomGrid" data-dojo-props="store: memoryStore"thead tr th data-dgrid-column="dgrid.editor({ field: 'id' },dijit.form.TextBo
我使用dgrid以网格格式显示数据,它有四列.一切都是可编辑的

我用以下方式声明它.

<table id="grid" data-dojo-type="dgrid.CustomGrid" data-dojo-props="store: memoryStore">
<thead>
    <tr>
        <th data-dgrid-column="dgrid.editor({ field: 'id' },dijit.form.TextBox,'click')">ID</th>
        <th data-dgrid-column="dgrid.editor({ field: 'name' },'click')">Name</th>
        <th data-dgrid-column="dgrid.editor({ field: 'description' },'click')">Description</th>
    </tr>
</thead>
</table>

我的问题是,当我编辑第一列时,编辑后应将焦点设置在第二列并在该单元格中显示光标,以便我可以开始编辑第二列;同样是第三列.

我对dojo和dgrid非常新.我在sitepen上找到了一些API,但无法解决我的问题

请帮帮我

解决方法

有dgrid / Grid :: edit(cell)方法开始.

我使用dojo / aspect :: after将一个事件监听器添加到编辑器小部件(例如dijit / form / TextBox),如果它不存在,则监听特定键的keypress事件,在我的情况下是TAB,然后调用grid .edit(单元格)与下一个应该编辑的单元格.

请参阅jsFiddle的一个工作示例:http://jsfiddle.net/phusick/2jU7R/

它还远没有完成,但至少它可以提供一个可能的直接.使用双击编辑并在编辑时按TAB跳转到下一个单元格.

aspect.after(grid,"edit",function(promise,cellNode) {

    if(promise === null) return;

    promise.then(function(widget) {
        if (!widget._editorKeypressHandle) {
            widget._editorKeypressHandle = widget.on("keypress",function(e) {

                for (var rowId in grid.selection) { break;}            
                for (var columnId in grid.selection[rowId]) { break;}

                if(e.charOrCode == keys.TAB) {
                    e.preventDefault();
                    var cellEdited = grid.cell(rowId,columnId);
                    var cellToEdit = grid.right(cellEdited,1);

                    if(cellEdited.row.id == cellToEdit.row.id
                       && cellEdited.column.id == cellToEdit.column.id
                      ) {
                          // go to next line
                          for(var firstColumnId in grid.columns) { break;}
                          var nextRow = grid.down(cellEdited.row,1);
                          cellToEdit = grid.cell(nextRow,firstColumnId);
                    };

                    grid.deselect(cellEdited);
                    grid.select(cellToEdit);
                    grid.edit(cellToEdit);
                }
            })
        }
    });
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读