Il me semble que la méthode addRowData répond mieux à vos exigences que les autres. Laissez-nous la 2e grille a les mêmes colonnes que la première grille. Ensuite, dans la poignée de l'événement « clic » du « ajouter au panier » bouton, vous pouvez faire comme suit
var gridProducts = $("products");
var gridShoppingCart = $("cart");
var prodIds = gridProducts.jqGrid('getGridParam', 'selarrrow');
for (var iProd=0, lProd=prodIds.length; iProd<lProd; iProd++) {
var prodId = prodIds[iProd];
var prodData = gridProducts.jqGrid('getRowData', prodId);
gridShoppingCart.jqGrid('addRowData', prodId, prodData);
}
Le vrai panier devrait probablement un élément compte. Si l'on ajoute le même produit deux fois, le compteur d'articles devrait être incrémenté au lieu d'avoir deux produits (avec le même identifiant) deux fois dans la deuxième grille.
Dans la deuxième grille, nous avons une colonne avec le nom 'count'. JavaScript est très facile d'ajouter une propriété à l'objet, afin que nous puissions facilement modifier le code ci-dessus pour la
var gridProducts = $("products");
var gridShoppingCart = $("cart");
var prodIds = gridProducts.jqGrid('getGridParam', 'selarrrow');
for (var iProd=0, lProd=prodIds.length; iProd<lProd; iProd++) {
var prodId = prodIds[iProd];
var prodData = gridProducts.jqGrid('getRowData', prodId);
var cnt = gridShoppingCart.jqGrid('getCell', prodId, 'count');
if (cnt) { // product exist
gridShoppingCart.jqGrid('setCell', prodId, cnt+1);
} else {
prodData.count = 1;
gridShoppingCart.jqGrid('addRowData', prodId, prodData);
}
}
suite je ne teste pas les exemples de code ci-dessus, mais j'espère qu'ils vont travailler.
merci! Oleg .. Je vais essayer de suivre votre suggestion ... par la façon dont j'ai mis à jour ma grille dans ma question. – paul
En outre, je pense que votre premier extrait de code va faire l'affaire car je n'ai pas besoin d'un compteur à la place je dois juste transférer les lignes de la première à la seconde grille .... merci! encore – paul