DropDownList,ListItems和SelectedItem

时间:2009-05-20 14:37:43

标签: asp.net drop-down-menu selected

另请参阅:Dropdowns filled with same list item

经过一天的跟踪和调试后,我终于发现用相同的项目集合填充3个DropDownLists会导致最后选择的项目出现在所有3个列表中。

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

但是,当以编程方式选择项目时,似乎只有 的情况。

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

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

任何人都可以解释为什么会这样吗?

编辑:我问的问题是为什么它在浏览器中完全有效?

2 个答案:

答案 0 :(得分:3)

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

将下拉列表视为查看对象集合的一种方式。您调用下拉列表并告诉它更改它的选定值实际上只会导致它循环遍历其集合中的项目并更改选择值。如果对两个下拉列表使用相同的对象集合,则更改集合中的值将导致两个下拉列表看到相同的更改。

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

答案 1 :(得分:0)

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

如果您的集合是DataTable,将下拉列表绑定到它将使用它的DefaultView。要避免这种情况,请将表打包在dataviews中;

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