gpt4 book ai didi

dojo - Dgrid 将焦点设置在单元格上

转载 作者:行者123 更新时间:2023-12-03 18:16:46 24 4
gpt4 key购买 nike

我使用 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' }, dijit.form.TextBox, 'click')">Name</th>
<th data-dgrid-column="dgrid.editor({ field: 'description' }, dijit.form.TextBox, 'click')">Description</th>
</tr>
</thead>
</table>

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

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

请帮我解决这个问题

最佳答案

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

我用过 dojo/aspect::after将事件监听器添加到编辑器小部件(例如 dijit/form/TextBox ),如果它不存在,则监听 keypress特定键的事件,在我的例子中为 TAB,然后调用 grid.edit(cell)与接下来应该编辑的单元格。

请参阅 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);
}
})
}
});
});

关于dojo - Dgrid 将焦点设置在单元格上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12216280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com