none
@Html.DropDownList & ViewBag RRS feed

  • Pergunta

  • Como carregar um DropDownList com o conteúdo de uma ViewBag?

    A ViewBag contem uma tabela proveniente de um DataSet.

    • Editado Wilson Boris quinta-feira, 9 de janeiro de 2014 20:06 complemento
    quinta-feira, 9 de janeiro de 2014 19:54

Respostas

  • cara não achei um jeito muito legal de se fazer mas, damos nossos jeitos .. rs, da uma olhada se te atende e tenta dar uma melhorada!

    List<Cidade> cidade = new List<Cidade>();
    var listaAux = (from row in dt.AsEnumerable() select new { ID = row[0], Descricao = row[1] }).ToList();
    for (int i = 0; i < listaAux.Count; i++)
    {
       cidade.Add(new Cidade(Convert.ToInt32(listaAux[i].ID), Convert.ToString(listaAux[i].Descricao)));
    }
    ViewBag.Combo = new SelectList(cidade, "ID", "Descricao", 0);

    --Rafael Albuquerque

    • Sugerido como Resposta Vitor Mendes sexta-feira, 10 de janeiro de 2014 11:50
    • Marcado como Resposta Wilson Boris sexta-feira, 10 de janeiro de 2014 11:55
    quinta-feira, 9 de janeiro de 2014 23:25

Todas as Respostas

  • Wilson ve se isso te ajuda!

    public class Cidade
    {
       public Cidade(int id, string descricao)
       {
          ID = id;
          Descricao = descricao;
       }
      public int ID { get; set; }
      public string Descricao { get; set; }
    }

    List<Cidade> cidade = new List<Cidade>(); cidade.Add(new Cidade(12,"são paulo")); ViewBag.Combo = new SelectList(cidade, "ID", "Descricao", 0);


    e no cshtml:

    @Html.DropDownList("Combo")


    --Rafael Albuquerque

    quinta-feira, 9 de janeiro de 2014 20:38
  • Olá Rafael, muito obrigado pelo retorno.

    A situação que eu tenho está retornando com a mensagem:

    Additional information: O item ViewData que possui a chave 'natjur' é do tipo 'System.Data.DataTable', mas precisa ser do tipo 'IEnumerable<SelectListItem>'.

    Como era de esperar pois eu estou trabalhando com um DataSet:

                

     DataSet ds = Sessao.ds;           

     ViewBag.natjur = Sessao.ds.Tables["Ag_Pol_C_PJ_Nat_Jur"];

      @Html.DropDownList("natjur")

    Como fazer essa alteração de DataTable para IEnumerable?

    quinta-feira, 9 de janeiro de 2014 22:18
  • cara não achei um jeito muito legal de se fazer mas, damos nossos jeitos .. rs, da uma olhada se te atende e tenta dar uma melhorada!

    List<Cidade> cidade = new List<Cidade>();
    var listaAux = (from row in dt.AsEnumerable() select new { ID = row[0], Descricao = row[1] }).ToList();
    for (int i = 0; i < listaAux.Count; i++)
    {
       cidade.Add(new Cidade(Convert.ToInt32(listaAux[i].ID), Convert.ToString(listaAux[i].Descricao)));
    }
    ViewBag.Combo = new SelectList(cidade, "ID", "Descricao", 0);

    --Rafael Albuquerque

    • Sugerido como Resposta Vitor Mendes sexta-feira, 10 de janeiro de 2014 11:50
    • Marcado como Resposta Wilson Boris sexta-feira, 10 de janeiro de 2014 11:55
    quinta-feira, 9 de janeiro de 2014 23:25