【问题标题】:Selecting a newly added row in jqGrid在 jqGrid 中选择新添加的行
【发布时间】:2020-01-22 17:56:41
【问题描述】:
我需要能够选择新添加的行(它总是最后添加的),但在网格重新加载后似乎不可能。
是否有可靠的方法在重新加载网格后选择最后一行?这是我现在拥有的代码,网格重新加载很好,但最后一个 id 未定义。触发器重新加载没有实现承诺(然后),所以我无法利用它。有什么想法吗?
$('#mygridid').trigger('reloadGrid');
var lastRowId = $('#mygridid').find(">tbody>tr.jqgrow:last").attr('id');
我们使用的是免费版本 4.4.4。
【问题讨论】:
标签:
javascript
jquery
jqgrid
【解决方案1】:
您可以尝试使用该行附加您发布的代码
$('#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 调用删除 make 行,并在创建网格之前进行上述绑定。因此,即使在第一次加载网格时,每次都会调用mySelectionLastRow。