0

ボタンのクリックで変数をインクリメントしようとしています。1 回だけ増加します。ページをリロードすると、迷子になっているようです。

私は次のコードを使用しています:

Dim ItemSelect As New ArrayList()
Dim Quantities As New ArrayList()
Dim itemQtyOrdered As Integer

Public Sub ShtickDataList_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles ShtickDataList.ItemCommand

    If e.CommandName = "ViewCart" Then
        Response.Redirect("~/ShoppingCart.aspx")
    End If

    If e.CommandName = "addToCart" Then
        Dim itemQuantity As DropDownList = e.Item.FindControl("QuantityDropDown")
        itemQtyOrdered = itemQuantity.SelectedValue
        ItemSelect.Add(e.CommandArgument)
        Quantities.Add(itemQtyOrdered)

        Session("itemInCart") = ItemSelect
        Session("quantities") = Quantities

        viewInvoice()
    End If

End Sub

Protected Sub viewInvoice()

    Dim itemSelected As ArrayList = DirectCast(Session("itemInCart"), ArrayList)
    Dim QuantityofItem As ArrayList = DirectCast(Session("quantities"), ArrayList)
    Dim conn As SqlConnection
    Dim comm As SqlCommand
    Dim reader As SqlDataReader
    Dim purimConnection2 As String = ConfigurationManager.ConnectionStrings("Purim").ConnectionString
    conn = New SqlConnection(purimConnection2)

    comm = New SqlCommand("SELECT ProductName FROM Products WHERE ProductID = @ProductID", conn)

    Dim i As Integer
    For i = 0 To ItemSelect.Count - 1
        comm.Parameters.Add("@ProductID", Data.SqlDbType.Int)
        comm.Parameters("@ProductID").Value = ItemSelect(i)
    Next

    Try
        conn.Open()
        reader = comm.ExecuteReader()
        ViewCartlink.Text = "View Cart: (" & ItemSelect.Count & ")"
    Finally
        conn.Close()
    End Try
End Sub
4

1 に答える 1

1

ああ、あなたはリストを参照しItemSelectているかもしれません。Quantitiesでそれらを探し、 にSessionない場合にのみ作成する必要がありSessionます。VB.NETは苦手なのでC#版です。でPage_Load

ItemSelect = (ArrayList)Session["itemInCart"];
if (ItemSelect == null)
{
  ItemSelect = new ArrayList();
  Session["itemInCart"] = ItemSelect;
}

についても同じですQuantities

また、あなたのループインviewInvoiceメソッドは間違っています。リスト内の複数の項目についてItemSelect、同じ名前の複数のパラメーターを追加しています。あなたはおそらく一度だけやりたかった

comm.Parameters("@ProductID").Value = ItemSelect(ItemSelect.Count - 1)
于 2013-02-28T16:34:46.257 に答える