[英]Dropdown on DataViewGrid that writes back to SQL table
我有兩張桌子。
一張Customer表和一張Tarrif表。
我需要能夠使用戶從Customer DataGriView的下拉菜單中選擇Tarrif,並將所選值寫回到customer表。
這是我的代碼,因此它可以編譯並運行而不會出錯-但是數據並未寫回到Customer表。
Imports System.Data.SqlClient
Imports System.Data.Common
Public Class ViewCustomersForm
Dim ds As DataSet = New DataSet()
Dim connStr As String = "server=barry-laptop\SQLEXPRESS; database=BillingReferenceData; integrated security=yes"
Dim sql As String = "SELECT [Customer ID] ,[Customer Name] ,[Address] ,[City] ,[County] ,[Post Code] FROM [BillingReferenceData].[dbo].[Customers]"
Dim conn As SqlConnection = New SqlConnection(connStr)
Dim comm As SqlCommand = New SqlCommand(Sql, conn)
Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)
Dim connStr2 As String = "server=barry-laptop\SQLEXPRESS; database=Test; integrated security=yes"
Dim sql2 As String = "SELECT * FROM Tarrifs"
Dim conn2 As SqlConnection = New SqlConnection(connStr2)
Dim comm2 As SqlCommand = New SqlCommand(sql2, conn2)
Dim dataadapter2 As SqlDataAdapter = New SqlDataAdapter(comm2)
Private Sub ViewCustomersForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'---open the connection and fill the Customer dataset---
conn.Open()
dataadapter.Fill(ds, "Customers_table")
conn.Close()
DataGridView1.DataSource = ds
DataGridView1.DataMember = "Customers_table"
'Tarrif Dropdown
'---create a combobox column---
Dim comboBoxCol As New DataGridViewComboBoxColumn
'---set the header---
comboBoxCol.HeaderText = "Tarrifs"
'Fill Tarrif Table
dataadapter2.Fill(ds, "Tarrifs")
'---data bind it--
comboBoxCol.DataSource = ds.Tables("Tarrifs")
comboBoxCol.DisplayMember = "Tarrif"
comboBoxCol.ValueMember = "Tarrif"
'---add a combobox column to the DataGridView control---
DataGridView1.Columns.Add(comboBoxCol)
End Sub
Private Sub Button_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
'Save updated Customer DataGridView
Dim sqlCmdBuilder As New SqlCommandBuilder(dataadapter)
sqlCmdBuilder.GetUpdateCommand()
dataadapter.Update(ds.Tables("Customers_table"))
'Save updated Tarrif dropdown back to Customer table
Dim sqlCmdBuilder2 As New SqlCommandBuilder(dataadapter2)
sqlCmdBuilder2.GetUpdateCommand()
dataadapter2.Update(ds.Tables("Customers_table"))
End Sub
End Class
我是VB新手,有人可以幫助您指出正確的方向嗎?
謝謝
您實際上需要檢索要填充的列,以便您的DataTable
包含要填充的列,然后保存回數據庫。 然后,您將通過其DataPropertyName
將該列綁定到網格的組合框列,就像綁定所有其他列一樣。 這是一個例子:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.