我有一个网格显示一些信息,当我选择多行并点击添加订单按钮时,它应显示第二个网格中的那些行而不进行任何调用,因为它只显示从第1到第2个网格中选定的行....就像购物车应用程序一样?是否可以使用jqGrid?
此外,如果我选择更多行,它应该附加在第二个网格中。
如果有人对如何实现它有任何想法..我真的会感到欣慰......谢谢!
答案 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);
}
}
我不测试上面的代码示例,但我希望它们可以正常工作。