Есть ли способ сделать прокрутку jqGrid до дна при добавлении новой строки? - PullRequest
5 голосов
/ 31 марта 2010

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

Есть ли способ сделать это программно?

Ответы [ 3 ]

11 голосов
/ 31 марта 2010

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

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

В противном случае вы сможете использовать функцию focus jQuery для установки фокуса на строку, например: 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);
}
0 голосов
/ 17 марта 2015
//i. Set newly added row (with id = newRowId) as the currently selected row
$('#myGrid').jqGrid('setSelection', newRowId);
//ii. Set focus on the currently selected row
$("#" + $('#myGrid').jqGrid('getGridParam', 'selrow')).focus();
0 голосов
/ 27 сентября 2014

FYI:

Я нашел этот пример полезным. http://gurarie.org/jqGrid.html с этого поста, http://www.trirand.com/blog/?page_id=393/bugs/setselection-is-not-scrolling-to-the-selected-row

Моя проблема была $(tableInstance).jqGrid('setSelection', id), не работала даже scrollrows: true, когда height: 'auto' в конфигурации jqGrid. Я установил высоту на определенную высоту 20, и «setSelection» сработало. Выбранная строка была видна для пользователя. Супер крутой

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