2010-09-21 21 views
0

J'ai une grille affichant des informations et quand je sélectionne plusieurs rangées et que je clique sur le bouton ajouter une commande, il faut afficher ces lignes dans la deuxième grille sans faire d'appel car elles affichent juste la ligne sélectionnée de la 1ère à la 2ème grille .... comme l'application de panier d'achat? Est-ce possible avec jqGrid?comment remplir la ligne sélectionnée de 1st jqgrid à 2nd jqgrid?

De plus, si j'ai sélectionné plus de lignes, il devrait s'ajouter dans cette deuxième grille.

Si quelqu'un a une idée sur la façon de le réaliser .. Je vais vraiment apprécier ... Merci!

Répondre

1

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.

+0

merci! Oleg .. Je vais essayer de suivre votre suggestion ... par la façon dont j'ai mis à jour ma grille dans ma question. – paul

+0

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