2010-05-16 57 views
1

我有一個稱爲combobox1和combobox2的窗體(form1)上有2個組合框。C#:使用一個數據表來填充2個不同的組合框?

每個組合框應充滿存放在2個不同的表中的SQL Server 2005數據:Table 1和Table

我的意思是:combobox1 - >表1 combobox2 - >表2

我填寫資料表正確的數據,然後將組合框單獨綁定到它。

我的問題是:在填充2個連擊後,他們兩個從table2獲得相同的數據。

這是我的代碼:

 DataTable tb1 = new DataTable(); 

     //Filling tb1 with data got from table1 
     combobox1.Items.Clear(); 
     combobox1.DataSource = tb1; 
     combobox1.DisplayMember = "Name"; 
     combobox1.ValueMember = "ID"; 
     combobox1.SelectedIndex = -1; 

     //filling tb1 with data got from table2 
     combobox2.Items.Clear(); 
     combobox2.DataSource = tb1; 
     combobox2.DisplayMember = "Name"; 
     combobox2.ValueMember = "ID"; 
     combobox2.SelectedIndex = -1; 

有什麼不對?

看來,如果我得到2個不同的數據表(tb1和tb2),每件事情都會好的。

請提出任何建議。

謝謝

回答

1

在數據表()創建2個獨立DataView的,並且每個組合框結合到DataView ,.

參見DataView Class

2

DataTable是引用類型,這意味着,當分配TB1到控制的DataSource時,實際上是在分配存儲器到DataSource參照/鏈接。因此,當您修改tb1變量時,您正在更改引用本身。由於您只是更改參考,DataSource仍然會看到相同的DataTable,只是現在它有一組不同的數據。

+0

好吧,所以你認爲我應該有2個不同的數據表填充2組合? – odiseh 2010-05-16 11:15:14

+1

如果你有類似的數據,那麼米奇的答案會更好。如果您要撤回兩個完全不同的DataTable,那麼只需聲明兩個DataTable。 – GenericTypeTea 2010-05-16 11:27:50

+0

謝謝,但是當我們使用字符串時,爲什麼你上面說的是不正確的。我的意思是,我們知道,字符串是一個引用類型。 string s =「hello」; textbox1.Text = s; s =「world」; textbox2.Text = s; 在上面的代碼片段中,textbox1.Text的值爲「hello」,textbox2.Text的值爲「world」。對? – odiseh 2010-05-16 12:09:01

相關問題