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

    09-17 22:40