DROPDOWNLIST, ListItems e SelectedItem
-
23-08-2019 - |
Pergunta
Veja também: preenchidos com o mesmo item da lista
Depois de um dia da detecção e depuração, eu finalmente descobri que preencher 3 DropDownLists com o mesmo conjunto de itens faz com que o último item selecionado para aparecer em todas as 3 listas.
Esta parece ser devido à 'selectedness' de um item a ser uma propriedade do item, em vez de uma propriedade da lista.
No entanto, este parece ser o caso única quando um item é selecionado por meio de programação.
Editar # 2: Como toda a gente parece estar respondendo a pergunta errada: O seguinte é o que está me confundindo
A aplicação parece funcionar como o esperado quando os itens que o usuário seleciona através do controle. -. A seleção de 3 itens diferentes nos resultados de interface Web nas corretos 3 itens diferentes que estão sendo inseridos no DB
Alguém pode explicar por que é esse o caso?
EDIT:? A pergunta que eu estou pedindo é por isso que ele funciona em tudo no navegador
Solução
É porque você está adicionando a mesma ListItem a dois controles DropDownList diferentes. O objecto que está a ser apresentado em cada um deles é a mesma de modo a mudar o valor do objecto que vai ser reflectida em ambos os DropDownLists.
Pense nos dropdowns como sendo apenas uma maneira de olhar para uma coleção de objetos. Você cutucando suspensa e dizendo-lhe para mudar é o valor selecionado realmente apenas resulta em que looping através dos itens nele de coleta e mudando sua selecione valor. Se você usar a mesma coleção de objetos para ambas queda baixos, alterando os valores na coleção resultará em ambas queda baixos vendo a mesma alteração.
É como ter duas janelas em uma casa que tanto olhar para fora na mesma casa do cão. Se você tivesse que dizer a uma pessoa olhando para fora da janela Um ir e pintar a casa de cão azul, mesmo que você não disse a pessoa olhando para fora da janela B para pintar "sua" casa de cachorro, ele ainda vai ver um cão azul casa.
Outras dicas
Isto tem a ver com o BindingContext e da coleção. Você precisa fazer cópias da coleção e se ligam a esses. Eu acho que isso foi feito para fazer vistas mãe-filho mais fáceis, onde você pode obter o elemento filho correta, com base no elemento mãe selecionado.
Se sua coleção é um DataTable, a ligação de um dropdownlist a ele vai usá-lo de DefaultView. Para evitar isso, empacotar a tabela no DataViews;
obj.DataSource = new DataView (dataTable, "", "", DataViewRowState.CurrentRows);