0

我在我的 jqgrid 中使用多选。我正在实现从第一个 jqgrid 到第二个 jqgrid 添加行,同时我从我被选中的第一个网格中删除同一行

通过使用演示,我使用了永久多选概念。

通过使用这个概念,我甚至可以在其他页面中选择行并且我可以复制它。

我的问题从这里开始:

我在第一个网格中有 6 条记录,我的行号是 5。所以我将有两页,第一页有 5 行,第二页有第 6 行。

当我选择 page1 中的一行和 page2 中的第 6 行并能够将数据从第一个 jqgrid 移动到第二个 jqgrid 时,同时我需要删除第一个 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");
}

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

4

1 回答 1

0

你从哪里得到idsOfSelectedRows?我想您曾经getDataIDs获取当前页面的所有行的id 。如果使用本地网格或带有loadonce: true内部参数的网格data_index将由 jqGrid 填充。您可以使用for-in循环枚举_index. 通过这种方式,您将获得网格所有页面上所有行的ID 。

此外,如果您添加行,则不应reloadGrid在添加每一行后调用。它会多次降低性能。取而代之的是,您可以手动操作目标网格,_index然后data调用reloadGrid一次。

更重要的是,我在上一个问题的答案中向您解释了您应该编写代码以使其不会产生id duplicates。您当前的代码肯定有 id 重复项。具有 id 的行selectedId存在于源网格中。如果您使用具有相同 id.jqGrid('addRowData', selectedId, selectedData);的行将被添加到下一个网格。因此,您将在页面上有两个具有相同 id 的元素。如果您将使用它可以从另一个网格中删除行。通常,使用具有 id 重复的页面会产生不可预知的结果。不同的网络浏览器会产生不同的结果。selectedId<tr>.jqGrid('delRowData', selectedId))

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

于 2012-11-19T10:09:43.793 回答