嘿我正在建一家商店(没有付款)
即
1)选择产品 2)结账 3)确认
选择产品屏幕看起来像将显示的网格视图
名称价格数量 文本文本输入框
因此,假设我每页有10个产品,即每个网格视图有10个数量输入框。
然后我的网格视图下方有两个按钮,即更新和结帐。
现在甚至担心更新。
如何工作,即我必须检查gridview中输入值的每个输入框?
即。有没有任何例子我如何循环通过gridview行检查一个大于0或null的值,例如,如果有一个值,然后执行像
这样的函数ShoppingCart.Instance.AddItem(5,5)
目前我的Gridview代码
<asp:GridView ID="productListTable" runat="server" DataSourceID="srcProductListPerCustomer" AutoGenerateColumns="False" AlternatingRowStyle-CssClass="tr_dark" HeaderStyle-CssClass="header_req" BorderWidth="0px" GridLines="None" AllowPaging="true" PageSize="25" EmptyDataText="No records." AllowSorting="true" Width="100%">
<Columns>
<asp:TemplateField HeaderText="Product Name" HeaderStyle-Width="130px" SortExpression="productName">
<ItemTemplate>
<asp:Label ID="ProductNameField" runat="server" Text='<%# Eval("productName").ToString() %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Pack Size" HeaderStyle-Width="70px" SortExpression="packSize">
<ItemTemplate>
<asp:Label ID="PackSizeField" runat="server" Text='<%# Eval("packSize").ToString()%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Trade Price" HeaderStyle-Width="130px" SortExpression="address">
<ItemTemplate>
<asp:Label ID="TradePriceField" runat="server" Text='<%# DisplayMoney(Eval("tradePrice").ToString())%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Discount" HeaderStyle-Width="60px" SortExpression="discount">
<ItemTemplate>
<asp:Label ID="DiscountField" runat="server" Text='<%# Eval("discount").ToString() %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Actual Price" HeaderStyle-Width="130px" SortExpression="actualPrice">
<ItemTemplate>
<asp:Label ID="ActualPriceField" runat="server" Text=''></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Stock" HeaderStyle-Width="130px" SortExpression="stock_indicator">
<ItemTemplate>
<asp:Label ID="StockField" runat="server" Text='<%# DisplayStockLevel(Eval("stock_indicator").ToString()) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Quantity">
<ItemTemplate>
<asp:TextBox runat="server" ID="txtQuantity" Columns="5"></asp:TextBox><br />
<asp:LinkButton runat="server" ID="btnRemove" Text="Remove" CommandName="Remove" CommandArgument='<%# Eval("product_ID_key") %>' style="font-size:12px;"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle CssClass="header_req" />
<AlternatingRowStyle CssClass="tr_dark" />
<PagerStyle CssClass="pagination" />
<PagerSettings PageButtonCount="3" FirstPageText="First" LastPageText="Last" NextPageText="Next" PreviousPageText="Previous" Mode="NumericFirstLast" />
</asp:GridView>
答案 0 :(得分:1)
将此代码放入您的按钮点击事件中,以遍历productList
GridView
的每一行并调用ShoppingCart.Instance.AddItem(productId, qty)
或您想要的任何其他方法,以更新产品列表及其数量:
For i As Integer = 0 To Me.productListTable.Rows.Count - 1
Dim txtQuantity As TextBox = CType(productListTable.Rows(i).FindControl("txtQuantity"), TextBox)
If Not txtQuantity Is Nothing Then
Dim qty As Integer = 0
If txtQuantity.Text.Trim() <> String.Empty Then
qty = Integer.Parse(txtQuantity.Text.Trim())
'get unique id of product - it can be SKU code or whatever that is unique for every product
Dim productId As String = productListTable.DataKeys(i).Value
'Update product list and quantities
ShoppingCart.Instance.AddItem(productId, 5)
End If
End If
Next
如果你注意到ShoppingCart.Instance.AddItem
方法,我会传递一个产品ID,所以在代码中我们更新了正确的项目,为了检索这个唯一的密钥,你需要添加DataKeyName
属性在GridView
代码中,其值等于唯一键的名称...例如: DataKeyNames =“ProductId”
<asp:GridView ID="productListTable" runat="server" DataSourceID="srcProductListPerCustomer" DataKeyNames="ProductId"
AutoGenerateColumns="False" AlternatingRowStyle-CssClass="tr_dark" HeaderStyle-CssClass="header_req"
BorderWidth="0px" GridLines="None" AllowPaging="true" PageSize="25" EmptyDataText="No records."
AllowSorting="true" Width="100%">
答案 1 :(得分:0)
您可以在输入更新数量时使用AJAX更新每一行。一个简单的方法是将GridView包装在UpdatePanel中,然后从那里开始。
更高级的是使用各种其他AJAX方法。
基本方法是循环遍历每个GridView行,获取每个GridView的文本框值,然后根据需要更新购物车。
对于存储方面,商店数据是什么意思?这是所有的产品吗?或只是购物车数据?
如果它只是购物车数据,那么将其放入会话对于小规模网站来说是好的。对于更大规模的站点,您可能希望将其存储在数据库中。