2013-03-18 53 views
-1

我有兩個相關的組合框。我的問題是我的combobox2項目不會重置/清除,因爲我從combobox1中選擇項目。相反,它會不斷在combobox2的底部添加/追加新項目。在添加新項目之前,我嘗試了ComboBox2.DataSource = NothingComboBox2.Items.Clear(),但仍未清除它。vb.net clear combobox items

Private Sub ComboBox1_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Validated 
    ComboBox2.DataSource = Nothing 
    ComboBox2.Items.Clear() 
    ComboBox2.Items.Remove(ComboBox2.DisplayMember) 
    sql = "select brgyname,idbrgy from barangay where idmun=" & ComboBox1.SelectedValue.ToString 
    da = New Odbc.OdbcDataAdapter(sql, con) 
    da.Fill(ds, "cbBrgy") 
    ComboBox2.DataSource = ds.Tables("cbBrgy") 
    ComboBox2.DisplayMember = "brgyname" 
End Sub 

回答

0

試試這個...更改方法......

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged 
    ComboBox2.Items.Clear() 
    sql = "select brgyname,idbrgy from barangay where idmun=" & ComboBox1.SelectedValue 
    da = New Odbc.OdbcDataAdapter(sql, con) 
    da.Fill(ds, "cbBrgy") 
    ComboBox2.DataSource = ds.Tables("cbBrgy") 
    ComboBox2.DisplayMember = "brgyname" 
End Sub 

謝謝!

+0

我得到了SQL錯誤,因爲我覺得'ComboBox1.SelectedValue'仍然不'selectedIndexChanged'觸發除非我驗證它。 :( – Ikong 2013-03-18 05:18:51

4

不要做

ComboBox2.DataSource = Nothing 

剛清除的項目

ComboBox2.Items.Clear() 
+0

我做到了,但我得到了這個錯誤'設置DataSource屬性時不能修改Items集合.' – Ikong 2013-03-18 05:17:28

0

而不是使用

ComboBox2.DataSource = NothingComboBox2.Items.Clear()

使用,ds.Tables("cbBrgy").Rows.Clear()

1

使用

ds.Tables("cbBrgy").Rows.Clear() 

而不是

ComboBox2.DataSource = Nothing 
ComboBox2.Items.Clear() 

但確保ds.Table("cbBrgy")Null使用該行

-1

遵循此之前,

ComboBox.Text =無

這足以清除組合框中的值。

+0

這不起作用。 – 2015-07-15 03:34:06

0
combobox1.SelectedIndex = -1 

這是最好的方式

+0

請編輯您的答案以添加關於您的代碼如何工作以及如何解決的解釋OP的問題,許多SO海報都是新手,不會理解你發佈的代碼。 – 2014-10-06 09:08:09

0
If Not IsNothing(ds.Tables("cbBrgy")) Then 
    ds.Tables("cbBrgy").clear 
End If 

sql = "select brgyname,idbrgy from barangay where idmun=" & ComboBox1.SelectedValue 
da = New Odbc.OdbcDataAdapter(sql, con) 
da.Fill(ds, "cbBrgy") 
ComboBox2.DataSource = ds.Tables("cbBrgy") 
ComboBox2.DisplayMember = "brgyname" 

再次填充它,然後再設置它作爲數據源之前,首先處置的表。

0

首先檢查數據源是否有值。 例如:

if isnothing(combobox1.Datasource) then 
*write your code to populate here 
end if.