DropDownList - o datavaluefield é sempre o mesmo
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();
}
}
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
Curtidas 0
Respostas
Robson Alves
17/01/2013
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();
}
}
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";
GOSTEI 0
Robson Alves
17/01/2013
o segundo foreach não existe mais! não é necessário ele.
GOSTEI 0
Pjava
17/01/2013
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.
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.
GOSTEI 0
Pjava
17/01/2013
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.
foreach (var nm in Estados)
{
ddl.Items.Add(new ListItem(nm.Sigla, nm.EstadoId.ToString()));
ddl.DataBind();
}
Post resolvido, podem fechar.
GOSTEI 0
José
17/01/2013
Obrigado por compartilhar a solução com a gente. Tópico concluído.
GOSTEI 0