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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar