У меня есть jqGrid на странице, и пользователи могут нажать кнопку для добавления новой строки. Если уже существует достаточно строк на странице для заполнения видимой части сетки, новая строка добавляется, и полоса прокрутки появляется, но пользователь должен прокрутить для наблюдения новой строки.
Существует ли способ сделать это программно?
Быстрый и простой способ сделать это с помощью 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);
}