我在页面上有一个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);
}