2011-04-16 114 views
0

我有一個DataTable(或通用列表),我想綁定到2 ComboBox。如果我在一個ComboBox更改時綁定它,則其他ComboBox也會更改爲第一個ComboBox值。將數據表(或列表)綁定到兩個組合框

我該如何區分它們?

我創建了另一個DataTable,並將其分配給主要的DataTable,但問題仍然存在。

回答

0

既然你是闖民宅同一對象,以兩個組合框也改變

DataTable dt; 
combobox1.DataSource=dt; 
DataTable dt2; 
dt2 = dt.Copy(); 
combobox2.DataSource=dt2; 
+0

克隆()只是複製數據結構 – Arian 2011-04-16 10:36:41

+0

看到我的編輯我的意思copy();而不是Clone()這是一個錯誤 – Nighil 2011-04-16 10:43:32

+0

但是,您應該考慮複製原始數據表將會產生以下後果:如果更新第一個數據表(例如添加或刪除項目),則不會更新第二個數據表。但是你使用ASP.NET webforms嗎? – Eilistraee 2011-04-16 14:36:08

0

它看起來像你將兩個Comboboxes的SelectedItem屬性綁定到同一個屬性。當一個人改變其他

<ComboBox ItemSource="{Binding List}" SeletectedItem="{Binding SelectedItem1, Mode=TwoWay}"/> 
<ComboBox ItemSource="{Binding List}" SeletectedItem="{Binding SelectedItem2, Mode=TwoWay}"/> 
0

的問題是:如果你想根據自己的組合框來選擇不同的項目,你應該使用不同的屬性只是創建一個新的DataTable(或List)變量並將現有列表分配給它並不會創建一個新的變量。它只是創造另一個指向同一個的參考。所以你沒有兩件相同的事情,你可以通過兩種不同的方式獲得一件事情。這是一個微妙的困難,經常絆倒人。 :)

NDC提到的Clone()方法是一個答案。對於列表,你也可以使用ToArray()來創建一個數組並綁定它(因爲Array不會有相同的問題)。

+0

克隆()只是複製數據結構 – Arian 2011-04-16 10:43:15