0

我有一个显示一些信息的网格,当我选择多行并单击添加订单按钮时​​,它应该在第二个网格中显示这些行而不进行任何调用,因为它只显示从第一个到第二个网格的选定行......就像购物购物车应用程序?jqGrid可以吗?

此外,如果我选择了更多行,它应该附加在第二个网格中。

如果有人对如何实现它有任何想法......我真的很感激......谢谢!

4

1 回答 1

1

在我看来,addRowData方法比其他方法更好地满足您的要求。让我们第二个网格与第一个网格具有相同的列。然后在“添加到购物车”按钮的“点击”事件句柄中,您可以执行以下操作

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

真正的购物车应该有一个商品计数。如果一个人添加了两次相同的产品,则项目计数器应该增加,而不是在第二个网格中两次有两个产品(具有相同的 id)。

让我们在第二个网格中有一个名为“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 回答