如何将选定的行从第1个jqgrid填充到第2个jqgrid?

时间:2010-09-21 19:49:02

标签: jquery jqgrid multi-select

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

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

如果有人对如何实现它有任何想法..我真的会感到欣慰......谢谢!

1 个答案:

答案 0 :(得分: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);
    }
}

我不测试上面的代码示例,但我希望它们可以正常工作。