2012-11-14 32 views
0

我花了整個早上使用Google搜索並查看此網站,但沒有發現任何似乎工作的東西。我在form1上有一個組合框,它從數據源tblCardTypeDD獲取其顯示值。其顯示成員是sCardType,其值成員是iCardTypeID。其選定的成員是來自tblInventory的fkCardTypeID。記錄保存在單獨表格中後刷新/重新組合框上的記錄組合

當我點擊一個按鈕form2彈出一個簡單的datagridview,允許我添加更多的卡類型下拉使用。目前我一直試圖添加代碼到保存按鈕點擊方法,但我找不到實際更新組合框的組合。

我一直在嘗試以下操作:

frmInventory.SEquipTypeComboBox.DataSource = Nothing 
frmInventory.SEquipTypeComboBox.DataSource = Me.EngDBbeDataSet.tblCardTypeDD 

但下拉成爲上述執行後的空白。

任何幫助,將不勝感激。

+0

的WinForms或WebForms的? –

+0

嘿,對不起。這是winforms。 –

回答

0

您應該檢查這個頁面,也許它會幫助你:

http://msdn.microsoft.com/en-us/library/w67sdsex.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

萬一事與願違:

,如果你把你的斷點,你「復位」組合框的數據源綁定,檢查數據源是否包含您想在組合框中看到的新值。它可能聽起來很愚蠢,但它經常發生一個錯誤,如果是這種情況,你知道問題不在於綁定。

同樣在沒有數據源的情況下再次添加數據源,你應該這樣做再告訴哪一列將是將displayMember像這樣:

ComboBox1.DisplayMember = "Column1" 

但如果你在現場看我告訴你,你應該看看,告訴你如何掛起和恢復的結合,而不是下降的數據源和筆記像這樣再次添加它。

雖然如果您使用的是數據表,這些值應該會自動更改,並且應該沒有理由丟棄和重新綁定組合框。

-

證明你不需要重新綁定我已經很快做出了一個非常骯髒的一段代碼來證明這一點。

form1有一個綁定到數據表的組合框,並且它還有一個按鈕來調用名爲form2的第二個窗體。

form2有一個按鈕,它將2行添加到Datatable,然後返回到第一個屏幕。

代碼表1:

Public Class Form1 

    Private dataSet As New DataSet("DataSet1") 
    Private dataTable As DataTable = dataSet.Tables.Add("DataTable1") 

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 

     dataTable.Columns.Add("Column1") 

     Dim row1 As DataRow = dataTable.NewRow() 
     row1("Column1") = "Data1" 
     dataTable.Rows.Add(row1) 
     Dim row2 As DataRow = dataTable.NewRow() 
     row2("Column1") = "Data2" 
     dataTable.Rows.Add(row2) 


     ComboBox1.DataSource = dataTable 
     ComboBox1.DisplayMember = "Column1" 
    End Sub 

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
     Dim form2 As New Form2(dataTable) 
     form2.Show() 
    End Sub 

End Class 

代碼窗體2:

Public Class Form2 

    Private _dataTable As DataTable 

    Public Sub New(ByVal dataTable As DataTable) 
     InitializeComponent() 
     _dataTable = dataTable 
    End Sub 

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 

     Dim row3 As DataRow = _dataTable.NewRow() 
     row3("Column1") = "Data3" 
     _dataTable.Rows.Add(row3) 
     Dim row4 As DataRow = _dataTable.NewRow() 
     row4("Column1") = "Data4" 
     _dataTable.Rows.Add(row4) 
     Me.Close() 
    End Sub 
End Class 
+0

我覺得我根本不理解這一點。好像是不應該這麼複雜。我已經嘗試了以下兩種方法: 'frmInventory.SCardTypeComboBox。數據源=無 frmInventory.SCardTypeComboBox.DataSource = EngDBbeDataSet.Tables( 「tblCardTypeDD」) frmInventory.SCardTypeComboBox.DisplayMember = 「sCardType」' –

+0

另外: 'Me.TblCardTypeBindingSource.SuspendBinding() 隨着frmInventory.SCardTypeComboBox .DataSource = frmInventory.TblCardTypeDDBindingSource .ValueMember =「sCardTypeID」 .DisplayMember =「sCardType」 尾隨着 Me.TblCardTypeBindingSource.ResumeBinding()' 我恨我不能使用某種格式的從混雜了上保持代碼這個網站。 –

+0

我改變了我的答案,我已經添加了一個快速而骯髒的工作示例,說明如果更新數據表,您通常不需要重新綁定組合框。你必須以某種方式做一些不同的事情,如果這些變化不能回答你的問題,你能否給出更多的源代碼? –