我需要幫助,我正在編寫我的網站的一部分。我有一個用sqlServerDataSource填充的listBox_Products。當我點擊一個產品時,它會沿着帶有productPrice和productName的gridview顯示相應的圖片。 gridview是在代碼隱藏的indexChange事件中以編程方式編寫的數據綁定。我有一個按鈕,addToShoppingCart。在button_Click事件中,我想將用戶選擇的項目添加到購物車(它位於同一頁面上),我有第二個gridView,它接收用戶選擇並顯示的項目。這是我卡住的地方。我知道我不能追加到gridview,我知道它必須是數據綁定。我的邏輯是這樣的:獲取用戶選擇的第一個項目,將其添加到數據表,插入到第二個gridview。現在,如果用戶選擇另一種產品,除了這次是相同的邏輯,我會添加一個新行,並將新數據添加到新行,並保留舊行。問題是我無法弄清楚如何做到這一點。我對數據表不是很有經驗。asp.net網格視圖和dataList
這是我的代碼背後。
這是我的代碼從SQL服務器獲得的產品:
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
這是我的代碼項添加到第二個GridView控件:
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
正如你可以看到我敢丟失。我知道邏輯很好,但我無法弄清代碼。
任何幫助,將不勝感激。
謝謝。說得通。我會給它一個鏡頭。無論哪種方式,你知道任何方式來做我最初雖然約?謝謝。 – user2892837
是的,如果你的網格綁定到一個數據表,你可以使用'datatable.NewRow'來添加新的行,但是在新記錄中填寫你的默認數據後,你必須調用'datatable.Rows.Add({你的新行})'。一個問題是網格不會知道有新的記錄,因爲你的數據源(DataTable)沒有實現INotifyCollectionChanged。所以,你必須設置datasource = Nothing,然後將其更改回數據表。我會建議使用ObservableCollection或BindingSource來避免重置DataSource。或者等等,你在做ASP。 – Steve
...你的下一個問題將是如何保持頁面之間的數據,參考上面的答案。 – Steve