System.Web.HttpException: Não é possível ter vários itens selecionados em um DropDownList

StackOverflow https://stackoverflow.com/questions/1603506

  •  05-07-2019
  •  | 
  •  

Pergunta

Durante o carregamento da página, índice 0 foi já seleccionada. Índice então esta afirmação código selecionado 1:

dropDownList.Items.FindByValue(myValue).Selected = true; 
// assume myValue is found at index 1 of dropDownList.Items

Na conclusão do carregamento da página, a página lê: "System.Web.HttpException:. Não pode ter vários itens selecionados em um DropDownList"

Por que recebo a exceção? E como eu posso corrigi-lo?

Foi útil?

Solução

notei que tanto o índice 0 e índice 1 tinha as propriedades "selecionados" definida como True (dropDownList.Items [0] .selected e dropDownList.Items [1] .selected ambos eram verdadeiras). No entanto, dropDownList.SelectedIndex ainda estava 0, embora o índice 1 foi criado mais recentemente.

Eu tentei resolver esta limpando a seleção da lista de antemão.

dropDownList.ClearSelection();
dropDownList.Items.FindByValue(myValue).Selected = true;

Mas isso não ajuda. Mesma exceção ocorreu.

O que ajuda, foi a definição do valor selecionado de outra forma:

dropDownList.SelectedIndex = dropDownList.Items.IndexOf(dropDownList.Items.FindByValue(myValue));

Agora os propaga alteração de seleção ao longo da lista.

Assim, não use dropDownList.Items [x] .selected = true / false para alterar o valor selecionado de um DropDownList. Em vez disso, o uso dropDownList.SelectedIndex = x;

Outras dicas

Eu apenas tive este problema, e descobri que ele foi causado por algo diferente. Eu estava adicionando a mesma instância ListItem a vários menus suspensos:

ListItem item = new ListItem("Foo", "1");
ListItem item2 = new ListItem("Bar", "2");
ddl1.Items.Add(item);
ddl2.Items.Add(item);
ddl1.Items.Add(item2);
ddl2.Items.Add(item2);

Em seguida, definir o SelectedValue:

ddl1.SelectedValue = "1"; //sets the Selected property of item
ddl2.SelectedValue = "2"; //sets the Selected property of item2

Mudar para a adição de instâncias separadas de ListItem corrigiu o problema.

Meu palpite é que quando você define o SelectedValue do DropDownList, ele define a propriedade Selected na ListItem adequado na sua coleção Items. Portanto, neste caso, no final do segundo bloco de código, ambos os itens são selecionados em ambos os menus suspensos.

Eu tive um problema semelhante, mas em um cenário um pouco diferente. Eu pensei que eu deveria publicá-la ea resolução aqui como ele pode ajudar alguém a economizar tempo, se acontecer de estar no meu cenário semelhante.

Primeiro, a mensagem de erro:

AMError: Sys.WebForms.PageRequestManagerServerErrorException:
Sys.WebForms.PageRequestManagerServerErrorException: 
Cannot have multiple items selected in a DropDownList.

Meu Cenário:

Eu estava usando usando VisualStudio 2010 a passo através da aplicação (ASP VB Net) quando encontrei o problema. Olhei a 2 dropdownlists na página, verificou a internet e desperdiçou várias horas w / o qualquer resolução.

Resolução:

Então eu tenho feedup e saiu VS 2010 e fez uma pausa. Quando eu voltar. I reran a aplicação e não houve nenhum problema. Foi quando eu percebi que meu caro erro: Eu tinha configurar uma expressão que defina o SelectedValue na janela de inspeção Debugger! Daí a multiplicidade!

Eu removi a expressão e tudo estava bem de novo --- Visual Studion 2010 capaz de passar a seção dropdownlist para a outra área do foco da aplicação.

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