1

我已经将我的 jqGrid 设置为使用单元格编辑,并且我已经绑定了一些导航键。

向上和向下箭头将调用上一行或下一行的编辑行,效果很好。唯一的问题是,如果我到达可见记录的末尾,它不会滚动以跟上。

我已经尝试scrollrows: true在网格选项中进行设置,但这似乎只适用于选择一整行,而不是一个单元格。

以前有人必须处理这个吗?我对滚动和 javascript/jquery 不是很有经验,所以我没有开箱即用的解决方案。

感谢您的任何建议!

编辑:这是一个帮助调试的小提琴。要查看问题,请单击“Thingy”列,使用向下箭头导航。

4

2 回答 2

1

editNewCell可以修改该函数以使用setSelection以确保新编辑的行可见:

function editNewCell(iRow, iCol) {
    e.preventDefault();
    e.stopPropagation();
    e.stopImmediatePropagation();
    grid.editCell(iRow, iCol, true);

    var selRow = grid.getGridParam('selrow');
    grid.jqGrid('setSelection', selRow );
};

如果您想尝试一下,这是一个带有更改的jsfiddle 。

于 2012-05-22T20:21:14.423 回答
0

我不确定我做对了。“如果我到达可见记录的末尾,它不会滚动以跟上。”是什么意思?你的意思是一旦你到达顶行/底行你就不能再往前走了,或者你的意思是如果你继续水平滚动并且一旦你越过可见记录的末尾,你的编辑模式就会消失。

我有类似的excel 像 gridedit 实现,我在编辑模式下有向上和向下箭头导航以进行单元格编辑。第一段中的链接将带您进入jsfiddle 示例。在 javascript 部分中查找HandleInputNavigation函数。我已将列的editoptions下 colModel 中的keydown事件绑定到HandleInputNavigation函数。那就是我处理向上/向下导航的地方。

5/24 更新:您的代码应如下所示:

    if (iRow && iCol) {
    var isShift = window.event.shiftKey ? true : false;
    var top = 1; //UPDATED
    var bottom = grid.getGridParam('reccount');
    var left = 0;
    var right = grid.getGridParam("colNames").length - 1;

    switch (key) {

    case 38:
            // up
        if (iRow === top) saveCell(iRow, iCol); //UPDATED
        else editNewCell(iRow - 1, iCol);
        break;

    case 40:
            // down
        if (iRow === bottom) saveCell(iRow, iCol); //UPDATED
        else editNewCell(iRow + 1, iCol);
        break;
    ...
    ...

更新的小提琴

于 2012-05-17T16:36:26.757 回答