2009-05-20 57 views
2

参见:Dropdowns filled with same list itemDropDownList的,listItems中和的SelectedItem

跟踪和调试的日子后,我终于想通了,填充3个DropDownLists与项目相同的集合使最后选择的项目出现在所有3所列出。

这似乎是由于项目的“选择性”是项目的属性,而不是列表的属性。

但是,这似乎是只有时通过编程方式选择一个项目。

编辑#2:每个人似乎都在回答错误的问题:以下是令我困惑的事情!

当用户通过控件选择项目时,应用程序似乎按预期工作。 - 在Web界面中选择3个不同的项目会导致在DB中输入正确的3个不同的项目。

任何人都可以解释为什么这是这种情况?

编辑:我问的问题是为什么它在浏览器中工作?

回答

3

这是因为您将相同的ListItem添加到两个不同的DropDownList控件。在每个对象中显示的对象都是相同的,因此更改该对象的值将反映在两个DropDownLists中。

将下拉列表看作是查看对象集合的一种方式。你戳下拉,并告诉它改变它的选定值,真的只是导致它循环通过它的集合中的项目,并更改他们的选择值。如果您对这两个下拉列表使用相同的对象集合,那么更改集合中的值将导致两个下拉列表看到相同的更改。

这就像在一个房子里有两个窗户都看着同一个狗屋。如果你要告诉一个从A窗望出去的人去画狗屋蓝色,即使你没有告诉那个看着窗外B画“他的”狗屋的人,他仍然会看到一只蓝狗屋。

0

这与BindingContext和集合有关。您需要制作集合的副本并绑定到这些集合。我认为这样做是为了让母子视图更容易,在那里你可以根据选定的母元素获得正确的子元素。

如果你的集合是一个DataTable,将一个下拉列表绑定到它将使用它的DefaultView。为了避免这种情况,请将表格打包在数据视图中;

obj.DataSource = new DataView(dataTable,“”,“”,DataViewRowState.CurrentRows);

相关问题