将数据表(或列表)绑定到两个组合框
问题描述:
我有一个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不会有相同的问题)。
+0
克隆()只是复制数据结构 – 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