DropDownList - o datavaluefield é sempre o mesmo

17/01/2013

0

Tenho uma DropDownList com as UF. Preciso pegar o DataValueField, à medida que eu escolho a UF. Acontece que só vem o valor do último registro. Tipo, se eu escolho SP(DataValueField = 26), mas o valor que é atribuído é o 27(TO), último registro. Se escolho AC(DataValue =1), continua vindo o 27. Fui dar um autopostback no Page_Load e além de duplicar a quantidade de registro no DropDown, ele continua com o mesmo problema. O que pode ser isso?

Essa é a rotina que fiz para preencher o DDL.
public void PreencheComboUf(DropDownList ddl)
{
MedicalServiceEntities msuf = new MedicalServiceEntities();
ObjectQuery<TB_ESTADO> estados = msuf.TB_ESTADO;

var Estados = from esta in estados
select new
{
esta.Sigla,
esta.EstadoId
};

foreach (var nm in Estados)
{
ddl.Items.Add(nm.Sigla);
ddl.DataValueField = nm.EstadoId.ToString();
}
}
Pjava

Pjava

Responder

Posts

17/01/2013

Robson Alves

Tenho uma DropDownList com as UF. Preciso pegar o DataValueField, à medida que eu escolho a UF. Acontece que só vem o valor do último registro. Tipo, se eu escolho SP(DataValueField = 26), mas o valor que é atribuído é o 27(TO), último registro. Se escolho AC(DataValue =1), continua vindo o 27. Fui dar um autopostback no Page_Load e além de duplicar a quantidade de registro no DropDown, ele continua com o mesmo problema. O que pode ser isso?

Essa é a rotina que fiz para preencher o DDL.
public void PreencheComboUf(DropDownList ddl)
{
MedicalServiceEntities msuf = new MedicalServiceEntities();
ObjectQuery<TB_ESTADO> estados = msuf.TB_ESTADO;

var Estados = from esta in estados
select new
{
esta.Sigla,
esta.EstadoId
};

foreach (var nm in Estados)
{
ddl.Items.Add(nm.Sigla);
ddl.DataValueField = nm.EstadoId.ToString();
}
}


Meu caro... simplifique isso:

 var Estados = from esta in estados
                          select new
                          {
                              esta.Sigla,
                              esta.EstadoId
                          };



O retorno do linq é uma list de Estados...
Atribua a variavel Estados no dropdown assim:

ddl.DataSource = Estados


e defina o Text e Value Field;
ddl.DataTextField = "Sigla";
ddl.DataValueField = "EstadoId";


Responder

17/01/2013

Robson Alves

o segundo foreach não existe mais! não é necessário ele.
Responder

17/01/2013

Pjava

Acho que eu não me fiz entender. Atribuir um DataValueField eu consigo. É na de eu pegar esse valor que não estou conseguindo, assim:

A combo já está preenchida. Aí eu seleciono SP(value == 26), acontece que o value que está vindo é 0 27 e não o 26. É somente na hora de eu selecionar a UF e pegar o value(ID) dele. Quanto a atribuir isso não é problemas.
Responder

17/01/2013

Pjava

Consegui, criando uma nova instância assim:
foreach (var nm in Estados)
{
ddl.Items.Add(new ListItem(nm.Sigla, nm.EstadoId.ToString()));
ddl.DataBind();
}
Post resolvido, podem fechar.
Responder

25/07/2013

José

Obrigado por compartilhar a solução com a gente. Tópico concluído.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar