【问题标题】:how to populate the selected row from 1st jqgrid to 2nd jqgrid?如何将选定的行从第一个 jqgrid 填充到第二个 jqgrid?
【发布时间】:2011-04-15 09:37:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: jquery jqgrid multi-select


    【解决方案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);
        }
    }
    

    我没有测试上面的代码示例,但我希望它们能工作。

    【讨论】:

    • 谢谢!奥列格 ..我将尝试遵循您的建议...顺便说一下,我在我的问题中更新了我的网格。
    • 此外,我认为您的第一个代码 sn-p 可以解决问题,因为我不需要计数器,而是只需将行从第一个网格转移到第二个网格......谢谢!再次
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 2018-01-23
    • 2013-02-06
    • 1970-01-01
    相关资源
    最近更新 更多