2009-05-20 86 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);

相關問題