0

我需要帮助我正在编码的网站的一部分。我有一个用 sqlServerDataSource 填充的 listBox_Products。当我点击一个产品时,它会沿着带有productPrice 和productName 的gridview 显示相应的图片。在 indexChange 事件上,gridview 以编程方式在代码隐藏中进行数据绑定。我有一个按钮,addToShoppingCart。在 button_Click 事件中,我想将用户选择的项目添加到购物车(它在同一页面上),我有第二个 gridView,它接收用户选择的项目并显示它。这就是我卡住的地方。我知道我不能附加到 gridview,而且我知道它必须是数据绑定的。我的逻辑是这样的:获取用户选择的第一个项目,将其添加到数据表中,插入第二个 gridview。现在如果用户选择另一个产品,同样的逻辑,除了这次,我会添加一个新行,并将新数据添加到新行,同时保留旧行。问题是我无法弄清楚如何做到这一点。我在数据表方面不是很有经验。

这是我背后的代码。

这是我从 sql server 获取产品的代码:

Private Sub GetProducts()

    Dim TechShopConnectionString As String = ConfigurationManager.ConnectionStrings("Zapata_IT_DataBaseConnectionString").ConnectionString
    Dim TechCon As New SqlConnection(TechShopConnectionString)
    Dim TechCmd As New SqlCommand()

    Dim index As Integer = ListBox_Products.SelectedIndex()

    TechCmd.CommandType = CommandType.StoredProcedure
    TechCmd.CommandText = "GetAllProductInformationByID"
    TechCmd.Parameters.Add("@ProductID", SqlDbType.Int).Value = index
    TechCmd.Connection = TechCon

    Try
        TechCon.Open()
        GridView2.EmptyDataText = "No Records Found"
        GridView2.DataSource = TechCmd.ExecuteReader()
        GridView2.DataBind()

    Catch ex As Exception
        Throw ex
    Finally
        TechCon.Close()
        TechCon.Dispose()
    End Try
End Sub

这是我将项目添加到第二个网格视图的代码:

Protected Sub Button_AddToCart_Click(sender As Object, e As EventArgs) Handles Button_AddToCart.Click
    Dim conn As SqlConnection = Nothing
    Dim index As Integer = ListBox_Products.SelectedIndex()

    Try
        Dim connString As String = ConfigurationManager.ConnectionStrings("Zapata_IT_DataBaseConnectionString").ConnectionString
        conn = New SqlConnection(connString)
        Dim cmd As SqlCommand = New SqlCommand()

        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "GetAllProductInformationByID"
        cmd.Parameters.Add("@ProductID", SqlDbType.Int).Value = index
        cmd.Connection = conn

        conn.Open()
        Dim dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
        Dim dr2 As DataRow

        dataTableCheckOut.NewRow()
        dataTableCheckOut.Load(dr, LoadOption.OverwriteChanges)

        GridView_CheckOut.DataSource = dataTableCheckOut
        GridView_CheckOut.DataBind()

    Catch ex As SqlException

    Catch ex As Exception

    Finally
        conn.Close()
    End Try

    ' Enter code here

正如你所看到的,我很迷茫。我知道逻辑很好,但我无法弄清楚代码。

任何帮助,将不胜感激。

4

1 回答 1

0

如果您想逐页保留有关用户购物车中内容的信息(您应该这样做),您应该将用户购物车中的项目保存到数据库中。如果您去 Amazon.Com,将一些东西添加到您的购物车,然后稍后再回来,即使在另一台计算机上,您也可以根据您的登录信息查看购物车中的商品。

由于您知道如何从数据库中读取数据,这对您来说应该很容易。只需将信息添加到这个新的购物车表中,并在需要时阅读。也许每个页面都显示了项目的数量,而您只需要计数,但是在查看结帐的购物车时,您需要显示所有信息。

于 2013-10-22T18:40:55.117 回答