2012-03-30 71 views
0

我有一個DataSource設置爲DataTable實例的ComboBox。當行被添加到DataTable時,它們在ComboBox中顯示而沒有附加代碼,但是當一行被刪除時,ComboBox保持不變。我的代碼的簡短摘要:編輯ComboBox的數據源

ComboBox selector = new ComboBox(); 
DataTable tbl = new DataTable(); 

PopulateTable() 
{ 
    DataRow row1 = tbl.NewRow(); 
    row1["field1"] = 1; 
    row1["field2"] = "Some Text"; 
    tbl.Rows.Add(row1); 

    DataRow row2 = tbl.NewRow(); 
    row2["field1"] = 2; 
    row2["field2"] = "More Text"; 
    tbl.Rows.Add(row2); 
} 

PopulateSelector() 
{ 
    selector.DisplayMember = "field2"; 
    selector.ValueMember = "field1"; 
    selector.DataSource = tbl; 
} 

RemoveRow() 
{ 
    tbl.Rows[0].Delete(); 
} 

此時,組合框似乎是正確的,但點擊它,它恢復至以前的數據。 DataTable保持正確,在該實例中刪除該行不會導致問題,我無法使ComboBox反映這些更改。

+0

有一個在發佈代碼中沒有組合框。 – 2012-03-30 17:47:48

+0

對不起,我忘了包括它。它是名爲'selector'的對象。 – Davenport 2012-03-30 18:00:26

回答

2

試試這個:

PopulateSelector() 
{ 
    selector.DataSource = null; 
    selector.DisplayMember = "field2"; 
    selector.ValueMember = "field1"; 
    selector.DataSource = tbl; 
} 

RemoveRow() 
{ 
    tbl.Rows[0].Delete(); 
    PopulateSelector() 
} 
1

您可以使用bindingsource插圖中的數據表和組合框,並呼籲ResetBindings