在 jqGrid 中选择新添加的行



我需要能够选择新添加的行(它总是最后添加(,但在网格重新加载后似乎是不可能的。

有没有可靠的方法可以在网格重新加载后选择最后一行?这是我现在拥有的代码,网格重新加载得很好,但最后一个 id 未定义。触发器重新加载不会实现承诺(然后(,所以我无法利用它。有什么想法吗?

$('#mygridid').trigger('reloadGrid');    
var lastRowId = $('#mygridid').find(">tbody>tr.jqgrow:last").attr('id');

我们使用的是免费版本4.4.4。

您可以尝试将您发布的代码与以下行一起附加

$('#mygridid').jqGrid("setSelection", lastRowId, false, null);

例如,如果您重新加载本地网格,它应该可以工作。如果从服务器加载数据,则代码应该更安全,例如:

var mySelectionLastRow = function () {
this.p.selrow = null;
this.p.selarrrow = [];
if (this.rows.length > 1) {
var lastRowId = this.rows[this.rows.length - 1].id;
$(this).jqGrid("setSelection", lastRowId, false, null);
}
$(this).unbind(".myLastRowSelection", mySelectionLastRow);
};
$("#mygridid").bind("jqGridGridComplete.myLastRowSelection", mySelectionLastRow);
// ...
$("#mygridid").trigger("reloadGrid");

上面的代码在触发reloadGrid之前将jqGridGridComplete事件绑定到函数mySelectionLastRow。函数mySelectionLastRow将在重新加载完成后选择最后一行,然后自行解绑。因此,下次重新加载网格时不会选择最后一行。如果确实需要在每次重新加载网格时强制选择,则可以在创建网格之前删除带有unbind调用的行并进行上述绑定。因此,即使在第一次加载网格时,每次都会调用mySelectionLastRow

最新更新