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

Foi útil?

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);

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top