0

jqgrid で複数選択を使用しています。1番目のjqgridから2番目のjqgridに行を追加すると同時に、選択した1番目のグリッドから同じ行を削除しています

デモを使用することで、永続的な複数選択の概念を利用しています。

その概念を使用することで、他のページでも行を選択してコピーすることができます。

私の問題はここから始まります:

1 番目のグリッドに 6 つのレコードがあり、行番号は 5 です。したがって、1 ページに 5 行、2 ページに 6 行の 2 つのページがあります。

page1 の行と page2 の 6 行目を選択し、1 番目の jqgrid から 2 番目の jqgrid にデータを移動できると同時に、1 番目の jqgrid のデータを削除する必要があります。行が削除され、トリガーを使用してもページ1が表示されません("reloadGrid");

これは、1番目のjqgridから2番目の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 を取得していたと思います。内部パラメーターを使用してローカルグリッドまたはグリッドを使用し、jqGrid によって埋められる場合。loop を使用して、 のすべてのプロパティを列挙できます。このようにして、グリッドのすべてのページのすべての行のID を取得します。loadonce: truedata_indexfor-in_index

さらに、複数のreloadGrid行を追加する場合は、すべての行を追加した後に呼び出すべきではありません。何度もパフォーマンスを低下させます。その代わりに、手動で目的のグリッドを操作して_indexからdatareloadGrid一度呼び出すことができます。

さらに、以前の質問に対する回答で、 id duplicatesが生成されないようにコードを記述する必要があることを説明しました。あなたの現在のコードには間違いなくIDの重複があります。id の行がselectedIdソース グリッドに存在します。同じ id.jqGrid('addRowData', selectedId, selectedData);の行を使用すると、次のグリッドに追加されます。したがって、同じ ID を持つ 2 つの要素がページに表示されます。使用する場合は、別のグリッドから行を削除できます。一般に、ID が重複しているページを操作すると、予期しない結果が生じる可能性があります。Web ブラウザーが異なれば、異なる結果が生成される可能性があります。selectedId<tr>.jqGrid('delRowData', selectedId))

ID 重複の問題があるかどうかわからない場合は、使用idPrefixするすべてのグリッドで異なる値のオプションを使用する必要があります。

于 2012-11-19T10:09:43.793 に答える