Inquiridor
dropdownlist não carrega os nomes dos estados

Pergunta
-
quando o usuario clicar no gridview no commandField editar , carregar o dropdownlist em outra aspx com o nome do estado que esta salvo na Entidade.
alguem poderia ajudar?
GridView
<asp:GridView ID="grvFuncionarios" runat="server" AutoGenerateColumns="False"
DataKeyNames="PK_Funcionario"
onselectedindexchanged="grvFuncionarios_SelectedIndexChanged"
Width="415px" BorderStyle="Solid"
onrowdeleting="grvFuncionarios_RowDeleting">
<Columns>
<asp:BoundField DataField="PK_Funcionario" HeaderText="Código" />
<asp:BoundField DataField="Nome" HeaderText="Nome" />
<asp:CommandField SelectText="[Editar]" ShowSelectButton="True" />
<asp:CommandField DeleteText="[Deletar]" ShowDeleteButton="True" />
</Columns>
</asp:GridView>aqui passo o id do estado pra sessao e vo para a outra aspx
protected void grvFuncionarios_SelectedIndexChanged(object sender, EventArgs e)
{
int idFuncionario = (int)grvFuncionarios.SelectedValue;
funcionario = funcionarioDao.Find(func => func.PK_Funcionario == idFuncionario).First<Funcionario>();
HttpContext.Current.Session["cod"] = funcionario.PK_Funcionario.ToString();
Response.Redirect("CadastroFuncionario.aspx");
}aqui preencho os campos
public void PreencherCampos()
{
int codigo = int.Parse(Session["cod"].ToString());
funcionario = funcionariosBll.Find(func => func.PK_Funcionario == codigo).First<Funcionario>();
txtNome.Text = funcionario.Nome;
txtEmail.Text = funcionario.Email;
txtDataNascimento.Text = funcionario.DataNascimento.ToString();
txtSalario.Text = funcionario.Salario.ToString();ddlEstado.SelectedValue = estado.Nome;
Session["cod"] = null;
}
Todas as Respostas
-
-
Vem vazio porque você não está preenchendo o DropDown. Faça um método para preencher o DropDown a preencha com os estados, pois não sei qual é a regra de preenchimento se são todos os estados ou não. Mas não consegui ver onde está sendo preenchida a dropdown. Essa linha não preenche a dropdown:
ddlEstado.SelectedValue = estado.Nome;
Abaixo tenho um método simples para preencher uma dropdown
public void PreencheComboUf(DropDownList ddl) { MedicalServiceEntities msuf = new MedicalServiceEntities(); ObjectQuery<TB_ESTADO> estados = msuf.TB_ESTADO; ddl.Items.Add("Escolha um estado"); var Estados = from esta in estados select new { esta.NomeEstado, esta.EstadoId }; foreach (var nm in Estados) { ddl.Items.Add(new ListItem(nm.NomeEstado, nm.EstadoId.ToString())); ddl.DataBind(); } }
Esse é apenas um exemplo que você adaptar ao seu código. Não precisa ser exatamente assim, mas que você preste atenção no foreach onde eu preencho a ddl. Isso sim, você pode fazer igual no seu código. Para preencher DropDown, você deve recorrer ao Items.Add(blá,blá,blá); -
Bom dia Julio, segue um exemplo bacana sobre o assunto:
//Classe Estado e suas propriedades public class Estado { public int Id { get; set; } public string NomeEstado { get; set; } } //Método que retorna um List<Estado> private List<Estado> RetornaLista() { //Instância da Lista List<Estado> lista = new List<Estado>(); //Crio novo Estado e adciono á lista Estado estado1 = new Estado(); estado1.Id = 1; estado1.NomeEstado = "Brasília"; lista.Add(estado1); //Crio novo Estado e adciono á lista Estado estado2 = new Estado(); estado2.Id = 2; estado2.NomeEstado = "Minas Gerais"; lista.Add(estado2); //Crio novo Estado e adciono á lista Estado estado3 = new Estado(); estado3.Id = 3; estado3.NomeEstado = "Espírito Santo"; lista.Add(estado3); //retorno a lista return lista; } //método que carrega o DropDownLIst private void CarregaDropDownList() { //seto a lista retornada pelo método acima //como o Datasource do DropDownList ddlEstado.DataSource = RetornaLista(); //Indico que o DataValueField é a //propriedade Id da classe Estado ddlEstado.DataValueField = "Id"; //Indico que o DataTextField é a //propriedade NomeEstado da classe Estado ddlEstado.DataTextField = "NomeEstado"; //Bindo o DropDownList ddlEstado.DataBind(); } protected void Page_Load(object sender, EventArgs e) { //Se não for PostBack if (!Page.IsPostBack) { //Carrego o DropDownList atravéz do método CarregaDropDownList(); } }
Fonte: http://goo.gl/n0kLBv