0

いくつかの情報を表示するグリッドがあり、複数の行を選択して[注文の追加]ボタンをクリックすると、1番目から2番目のグリッドまでの選択した行が表示されるため、呼び出しを行わずに2番目のグリッドにそれらの行が表示されます。カートアプリケーション?jqGridで可能ですか?

さらに、さらに行を選択した場合は、その2番目のグリッドに追加する必要があります。

誰かがそれを達成する方法について何か考えがあれば..私は本当に感謝します...ありがとう!

4

1 に答える 1

1

addRowDataメソッドは、他のメソッドよりも要件に適しているように思われます。2番目のグリッドに1番目のグリッドと同じ列があるとします。次に、「ショッピングカートに追加」ボタンの「クリック」イベントハンドルで、次のように実行できます。

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);
}

実際のショッピングカートには、おそらくアイテム数が含まれているはずです。同じ商品を2回追加する場合は、2番目のグリッドに2つの商品(同じID)を2回入れるのではなく、アイテムカウンターを増やす必要があります。

2番目のグリッドに、「count」という名前の列があります。JavaScriptでは、オブジェクトにプロパティを追加するのは非常に簡単なので、上記のコードを次のように簡単に変更できます。

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);
    }
}

上記のコード例はテストしていませんが、機能することを願っています。

于 2010-09-21T20:50:16.550 に答える