我在jqgrid中使用multiselect。我正在实现从第1个jqgrid到第2个jqgrid添加行,同时我从第1个网格中删除了我已被选中的行
使用demo我使用永久性多选概念。
通过使用该概念,我甚至可以在其他页面中选择行,并且我可以复制它。
我的问题从这里开始:
我在第一个网格中有6条记录,而我的行号是5.所以我将有两页,1页有5行,第2页有第6行。
当我在第2页的第1行和第6行中选择一行并且能够从第1个jqgrid移动到第2个jqgrid时的数据,同时我需要删除第1个jqgrid中的数据。因为我在第2页时删除了数据,第6行将被删除,即使我使用了触发器(“reloadGrid”),它也没有显示第1页;
这是我用来添加和删除第一个jqgrid到第二个jqgrid的行的代码
var questionids = idsOfSelectedRows;
var questionLength = questionids.length;
for (var i=0; i < questionLength; i++)
{
var selectedId = questionids[i];
var selectedData = $('#questions_list').jqGrid('getLocalRow', selectedId);
$('#selectedQuestions_list').jqGrid('addRowData', selectedId, selectedData);
$('#selectedQuestions_list').trigger("reloadGrid");
}
for (var i = 0; i < questionLength ; i++) {
var selectedId = questionids[i];
console.log("delete is "+ $('#questions_list').jqGrid('delRowData', selectedId));
//$('#questions_list').trigger("reloadGrid");
}
请允许任何人在代码中提供帮助,在此先感谢。
答案 0 :(得分:0)
您获得idsOfSelectedRows
的位置?我假设您使用getDataIDs
获取当前页面的所有行。如果您使用本地网格或网格loadonce: true
,内部参数data
和_index
将由jqGrid填充。您可以使用for-in
循环枚举_index
的所有属性。通过这种方式,您将获得网格中所有行的 。
此外,如果您添加多个行,则在添加每一行后不应调用reloadGrid
。它会多次降低性能。您可以手动操作目标网格的_index
和data
,然后再拨打reloadGrid
一次。
然后我在the answer上解释了您之前的问题,您应该编写代码,以便生成无ID重复。您当前的代码肯定是id重复。标识为selectedId
的行存在于源网格中。如果您使用.jqGrid('addRowData', selectedId, selectedData);
,则具有相同ID selectedId
的行将添加到下一个网格中。因此,页面上将有两个具有相同ID的<tr>
元素。如果您使用.jqGrid('delRowData', selectedId))
,则可以从另一个网格中删除行。通常,使用具有id重复的页面会产生不可预测的结果。不同的Web浏览器可以产生不同的结果。
如果您不确定是否有id dupplicate问题,您应该在您使用的所有网格中使用idPrefix
选项和不同的值。