2011-04-16 113 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