我有一個DataTable
(或通用列表),我想綁定到2 ComboBox
。如果我在一個ComboBox
更改時綁定它,則其他ComboBox
也會更改爲第一個ComboBox
值。將數據表(或列表)綁定到兩個組合框
我該如何區分它們?
我創建了另一個DataTable
,並將其分配給主要的DataTable
,但問題仍然存在。
我有一個DataTable
(或通用列表),我想綁定到2 ComboBox
。如果我在一個ComboBox
更改時綁定它,則其他ComboBox
也會更改爲第一個ComboBox
值。將數據表(或列表)綁定到兩個組合框
我該如何區分它們?
我創建了另一個DataTable
,並將其分配給主要的DataTable
,但問題仍然存在。
既然你是闖民宅同一對象,以兩個組合框也改變
DataTable dt;
combobox1.DataSource=dt;
DataTable dt2;
dt2 = dt.Copy();
combobox2.DataSource=dt2;
它看起來像你將兩個Comboboxes的SelectedItem屬性綁定到同一個屬性。當一個人改變其他
<ComboBox ItemSource="{Binding List}" SeletectedItem="{Binding SelectedItem1, Mode=TwoWay}"/>
<ComboBox ItemSource="{Binding List}" SeletectedItem="{Binding SelectedItem2, Mode=TwoWay}"/>
的問題是:如果你想根據自己的組合框來選擇不同的項目,你應該使用不同的屬性只是創建一個新的DataTable(或List)變量並將現有列表分配給它並不會創建一個新的變量。它只是創造另一個指向同一個的參考。所以你沒有兩件相同的事情,你可以通過兩種不同的方式獲得一件事情。這是一個微妙的困難,經常絆倒人。 :)
NDC提到的Clone()方法是一個答案。對於列表,你也可以使用ToArray()來創建一個數組並綁定它(因爲Array不會有相同的問題)。
克隆()只是複製數據結構 – Arian 2011-04-16 10:43:15
克隆()只是複製數據結構 – Arian 2011-04-16 10:36:41
看到我的編輯我的意思copy();而不是Clone()這是一個錯誤 – Nighil 2011-04-16 10:43:32
但是,您應該考慮複製原始數據表將會產生以下後果:如果更新第一個數據表(例如添加或刪除項目),則不會更新第二個數據表。但是你使用ASP.NET webforms嗎? – Eilistraee 2011-04-16 14:36:08