none
DropDownList com item selecionados não funciona RRS feed

  • Pergunta

  • Eae galera!!!

    bem, to com uma dúvida que eu acho que é um bug.
    tenho um dropdownlist:

    <%= Html.DropDownList("ddlGrupo", new SelectList(Model, "ID", "Desc", 2) )%>

    quero que liste os grupos com o que tenha value = 2 selecionado.

    o codigo-fonte mostra que gerou:

    <select id="ddlGrupo" name="ddlGrupo">
    <option value="1"> Grupo 1 </option>
    <option value="2"> Grupo 2 </option>
    <option value="3"> Grupo 3 </option>
    </select>

    reparem que não marcou nenhum como selecionado. Acredito que o correto seria:

    <select id="ddlGrupo" name="ddlGrupo">
    <option value="1"> Grupo 1 </option>
    <option selected="selected" value="2"> Grupo 2 </option>
    <option value="3"> Grupo 3 </option>
    </select>

    Alguem saberia me dizer como fazer para trazer esse DropDownList selecionado ?

    Grato!

    terça-feira, 16 de fevereiro de 2010 20:31

Respostas

  • Olá Mordred,

    Com base no seu código criei o código abaixo é funcionou

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            List<Grupo> model = new List<Grupo>();
            model.Add(new Grupo() { Id = 1, Desc = "Grupo 1" });
            model.Add(new Grupo() { Id = 2, Desc = "Grupo 2" });
            model.Add(new Grupo() { Id = 3, Desc = "Grupo 3" });
    
            return View(model);
        }
    }
    
    public class Grupo
    {
        public int Id { get; set; }
        public string Desc { get; set; }
    }
    View

    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
        Inherits="System.Web.Mvc.ViewPage<List<MvcApplication1.Controllers.Grupo>>" %>
    
    <asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
        Home Page
    </asp:Content>
    
    <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
        <%= Html.DropDownList("ddlGrupo", new SelectList(Model, "ID", "Desc", 2) )%>
    </asp:Content>




    Abraços,
    Daniel Fonseca Castro
    www.danielfonsecacastro.com.br
    • Marcado como Resposta Mordred sábado, 20 de fevereiro de 2010 19:50
    quarta-feira, 17 de fevereiro de 2010 00:37
  • Ok Daniel, essa solução funciona sim!!!


    mas o engraçado é que do jeito que eu faço não !!!

    eu chamo no controller:

    ViewData["ddlGrupos"] = new SelectList( model.ToList(), "Id", "Desc", 3 );

    e na View :

    <%= Html.DropDownList("ddlGrupos", (ViewData["ddlGrupos"] as SelectList) )%>

    não faz sentido! não mostra o selecionado mesmo o ViewData tendo valores selecionados.

    Depois de muito procurar, descobri que se eu troco o nome do DropDownList para o do campo chave funciona !!! fica assim :

    <%= Html.DropDownList("Id", (ViewData["ddlGrupos"] as SelectList) )%>

    cara, deve ser um bug isso... mto ridículo!!!!

    achei a solução aqui :

    http://weblogs.asp.net/ashicmahtab/archive/2009/03/27/asp-net-mvc-html-dropdownlist-and-selected-value.aspx


    mas de qualquer forma valeu pela ajuda!!! vou usar a sua solução pois eu quero manter um padrão no nomes dos controles!!!!

    Brigadão!




    • Marcado como Resposta Mordred sábado, 20 de fevereiro de 2010 19:50
    sábado, 20 de fevereiro de 2010 19:49

Todas as Respostas

  • Olá Mordred,

    Com base no seu código criei o código abaixo é funcionou

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            List<Grupo> model = new List<Grupo>();
            model.Add(new Grupo() { Id = 1, Desc = "Grupo 1" });
            model.Add(new Grupo() { Id = 2, Desc = "Grupo 2" });
            model.Add(new Grupo() { Id = 3, Desc = "Grupo 3" });
    
            return View(model);
        }
    }
    
    public class Grupo
    {
        public int Id { get; set; }
        public string Desc { get; set; }
    }
    View

    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
        Inherits="System.Web.Mvc.ViewPage<List<MvcApplication1.Controllers.Grupo>>" %>
    
    <asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
        Home Page
    </asp:Content>
    
    <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
        <%= Html.DropDownList("ddlGrupo", new SelectList(Model, "ID", "Desc", 2) )%>
    </asp:Content>




    Abraços,
    Daniel Fonseca Castro
    www.danielfonsecacastro.com.br
    • Marcado como Resposta Mordred sábado, 20 de fevereiro de 2010 19:50
    quarta-feira, 17 de fevereiro de 2010 00:37
  • Ok Daniel, essa solução funciona sim!!!


    mas o engraçado é que do jeito que eu faço não !!!

    eu chamo no controller:

    ViewData["ddlGrupos"] = new SelectList( model.ToList(), "Id", "Desc", 3 );

    e na View :

    <%= Html.DropDownList("ddlGrupos", (ViewData["ddlGrupos"] as SelectList) )%>

    não faz sentido! não mostra o selecionado mesmo o ViewData tendo valores selecionados.

    Depois de muito procurar, descobri que se eu troco o nome do DropDownList para o do campo chave funciona !!! fica assim :

    <%= Html.DropDownList("Id", (ViewData["ddlGrupos"] as SelectList) )%>

    cara, deve ser um bug isso... mto ridículo!!!!

    achei a solução aqui :

    http://weblogs.asp.net/ashicmahtab/archive/2009/03/27/asp-net-mvc-html-dropdownlist-and-selected-value.aspx


    mas de qualquer forma valeu pela ajuda!!! vou usar a sua solução pois eu quero manter um padrão no nomes dos controles!!!!

    Brigadão!




    • Marcado como Resposta Mordred sábado, 20 de fevereiro de 2010 19:50
    sábado, 20 de fevereiro de 2010 19:49
  • Olá ,

    Se você utilizar um ViewData com o mesmo nome do helper DropDownList fica bem fácil da uma olhada aqui
    http://www.danielfonsecacastro.com.br/post/2009/08/11/Dica-Html-Helper-DropDownList-e-ViewData.aspx

    Abraços,
    Daniel Fonseca Castro
    www.danielfonsecacastro.com.br
    sábado, 20 de fevereiro de 2010 19:58
  • Eu tenho esse codigo no meu Controller:
    class Pessoa
        {
          public string MyProperty { get; set; }
          public string MyProperty2 { get; set; }
          public Pessoa(String nome, string cidade)
          {
            MyProperty = nome;
            MyProperty2 = cidade;
          }
        }
        public ActionResult Index()
        {
    
          var Pessoas = new List<Pessoa>();
    
          Pessoas.Add(new Pessoa("Valor1","Fortaleza"));
          Pessoas.Add(new Pessoa("Valor2", "São Paulo"));
          Pessoas.Add(new Pessoa("Valor3", "Rio de Janeiro"));
          Pessoas.Add(new Pessoa("Valor4", "Brasilia"));
          ViewData["Status"] = new SelectList(Pessoas, "MyProperty", "MyProperty2", "Valor2");
    
          return View();
        }
    E tenho o seguinte codigo na View:
    <%= Html.DropDownList("Oi", ViewData["Status"] as SelectList)%>

    Para especificar qual valor deve estar selecionado na hora de renderização, você deve informar no 4º parametro da SelectList como voce pode ver no exemplo acima.

    Espero ter ajudado.


    Contato:albertim_brasil@hotmail.com
    domingo, 2 de maio de 2010 00:30
  • Estou usando o MVC 4 e deparei com esse "bug", alterei o nome da propriedade NumeroBanco para Banco apenas e funcionou. Achei mega bizarro, mas vamos seguir o barco. Obrigado pela luz que vcs deram.
    terça-feira, 1 de dezembro de 2015 17:27