簡體   English   中英

DataViewGrid上的回寫到SQL表的下拉菜單

[英]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將該列綁定到網格的組合框列,就像綁定所有其他列一樣。 這是一個例子:

http://www.vbforums.com/showthread.php?541476-NET-2-0-Adding-a-ComboBox-Column-to-a-DataGridView&highlight=

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM