2010-03-30 2 views
5

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

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

ответ

11

быстрый и простой способ сделать это с помощью API jqGrid заключается в следующем:

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

в противном случае вы должны быть в состоянии использовать focus функцию JQuery, чтобы установить фокус на строку, например: jQuery("#" + row_id).focus() - но у меня нет t проверил этот метод, поэтому 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

На самом деле, я хочу отредактировать строку, поэтому я просто оставлю ее в режиме редактирования - работает как шарм! – HitLikeAHammer

+0

Спасибо, Джастин! единственная модификация, которую я должен сделать, это: .scrollTop ((rowHeight * index) -rowHeight), чтобы сделать видимой целевую строку. С уважением. – nerdcoder

-1

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» работал. Выбранная строка была для пользователя. Super Cool

-1
//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(); 
Смежные вопросы