Существует ли способ заставить jqGrid прокрутить к нижней части, когда новая строка добавляется?

У меня есть jqGrid на странице, и пользователи могут нажать кнопку для добавления новой строки. Если уже существует достаточно строк на странице для заполнения видимой части сетки, новая строка добавляется, и полоса прокрутки появляется, но пользователь должен прокрутить для наблюдения новой строки.

Существует ли способ сделать это программно?

5
задан Justin Ethier 12 September 2013 в 13:18
поделиться

1 ответ

Быстрый и простой способ сделать это с помощью jqGrid API:

  • Вызвать editRow (который установит фокус на редактируемую строку)
  • А затем сразу же вызвать restoreRow (потому что на самом деле вы не хотите редактировать строку)

В противном случае вы можете использовать функцию jQuery focus, чтобы установить фокус на строку, например: jQuery("#" + row_id).focus() - но я не тестировал этот метод, так что YMMV.

На самом деле focus не прокручивает div сетки. Но вы можете использовать следующий код, чтобы гарантировать, что сетка прокручивается так, что строка с заданным id будет доступна для просмотра:

function getGridRowHeight (targetGrid) {
    var height = null; // Default

    try{
        height = jQuery(targetGrid).find('tbody').find('tr:first').outerHeight();
    }
    catch(e){
     //catch and just suppress error
    }

    return height;
}

function scrollToRow (targetGrid, id) {
    var rowHeight = getGridRowHeight(targetGrid) || 23; // Default height
    var index = jQuery(targetGrid).getInd(id);
    jQuery(targetGrid).closest(".ui-jqgrid-bdiv").scrollTop(rowHeight * index);
}
11
ответ дан 13 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: