Как установить фокус на ячейку, которая была нажата, чтобы начать встроенное редактирование в jqgrid - PullRequest
2 голосов
/ 28 августа 2011

В jqgrid встроенное редактирование отслеживается двойным щелчком в ячейке. Курсор расположен в первом редактируемом столбце. Требуется второй щелчок, чтобы поместить курсор в ячейку, по которой щелкнули.

Как поместить курсор в ячейку, по которой щелкнули, чтобы начать редактирование inline? В режиме редактирования ячейки нажатая ячейка получает фокус правильно.

function beginInlineEdit(rowID, afterSave) {
    var grid2 = $("#grid");
    if (rowID && rowID !== lastSelectedRow) {
        var scrollPosition = $("#grid").closest(".ui-jqgrid-bdiv").scrollLeft();
        cancelEditing($("#grid"));
        lastSelectedRow = rowID;
        setTimeout(function () {
            grid2.closest(".ui-jqgrid-bdiv").scrollLeft(scrollPosition);
        }, 100);
    }
    $("tr#" + lastSelectedRow + " div.ui-inline-edit, " + "tr#" + lastSelectedRow + " div.ui-inline-del").hide();
    $("tr#" + lastSelectedRow + " div.ui-inline-save, " + "tr#" + lastSelectedRow + " div.ui-inline-cancel").show();

    $("#grid").jqGrid('editRow', lastSelectedRow, true, null, null, null,
                 { _dokdata: FormData },
                 afterSave,
                 errorfunc,
                 function () {
                     cancelEditing($("#grid"));
                     setFocusToGrid();
                 }
             );
}

Обновление 1

Я попробовал демо Олега в IE9. Вопросы:

  1. двойной щелчок в столбце флажка по-прежнему устанавливает фокус на первый столбец.

  2. Я уменьшил ширину окна обзора и прокрутил вправо. Щелчок в крайнем правом столбце вызывает странное быстрое мигание: сетка прокручивается в крайнее левое положение, а затем обратно в правое положение.

Как исправить эти проблемы?

1 Ответ

3 голосов
/ 28 августа 2011

Посмотрите на демо от ответа .Либо демо-версия делает именно то, что вам нужно, или вы можете изменить ее в соответствии с вашими целями.

ОБНОВЛЕНО : 1) Вы пробовали мое оригинальное демо или пытались использовать описанную идею в1009 * твой код ?В моем окружении (на разных компьютерах) демо поместит фокус в ячейку, по которой щелкнули.Он работает корректно в IE9 (в нативном и даже в режиме совместимости), IE8, Google Chrome 13, Safari 5.1, Opera 11.50, Firefox 3.6.20 и Nightly 9.0a1 (следующая версия Firefox).

2) Сетка прокрутки в первой позиции редактирования, а затем в ячейку, по которой щелкнули, - правильное поведение.По умолчанию встроенное редактирование jqGrid устанавливает фокус на первую ячейку редактирования, а затем внутри oneditfunc функции обратного вызова editRow мы меняем фокус на ячейку, по которой щелкнули.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...