如何从一个网格向另一个网格添加行时删除行并重新加载网格

时间:2012-11-19 09:49:00

标签: jquery jqgrid

我在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");
}

请允许任何人在代码中提供帮助,在此先感谢。

1 个答案:

答案 0 :(得分:0)

您获得idsOfSelectedRows的位置?我假设您使用getDataIDs获取当前页面的所有行。如果您使用本地网格或网格loadonce: true,内部参数data_index将由jqGrid填充。您可以使用for-in循环枚举_index的所有属性。通过这种方式,您将获得网格中所有行的

此外,如果您添加多个行,则在添加每一行后不应调用reloadGrid。它会多次降低性能。您可以手动操作目标网格的_indexdata,然后再拨打reloadGrid一次。

然后我在the answer上解释了您之前的问题,您应该编写代码,以便生成无ID重复。您当前的代码肯定是id重复。标识为selectedId的行存在于源网格中。如果您使用.jqGrid('addRowData', selectedId, selectedData);,则具有相同ID selectedId 行将添加到下一个网格中。因此,页面上将有两个具有相同ID的<tr>元素。如果您使用.jqGrid('delRowData', selectedId)),则可以从另一个网格中删除行。通常,使用具有id重复的页面会产生不可预测的结果。不同的Web浏览器可以产生不同的结果。

如果您不确定是否有id dupplicate问题,您应该在您使用的所有网格中使用idPrefix选项和不同的值。