none
DropDownList não seleciona item RRS feed

  • Pergunta

  • Olá,

    estou fazendo uma view para editar um registro, e nos campos DropDownList eu uso class para ajustar o width do componente.
    Porém se eu uso assim, não traz nada selecionado:

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoaID, String.Empty, new { style = "width:95px;" })

    Porém se faço assim, retorna o item selecionado corretamente, porém com o tamanho errado:

    @Html.DropDownList("TipoPessoaID", String.Empty)

    Por que será que está acontecendo isto?

    abs



                    

    Marlon Tiedt
    www.sesmt.com.br

    sexta-feira, 26 de outubro de 2012 12:40

Respostas

  • Murilo, descobri o problema...O algo estava se perdendo..

    Se eu fizer no controller assim:

    ViewBag.TipoPessoaID = new SelectList(db.TipoPessoa, "TipoPessoaID", "Descricao", pessoa.TipoPessoaID);
    e na view assim:

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoaID, String.Empty, htmlAttributes: new { style = "width:95px;" })
    ele não seta os dados...

    Porém se no controller fazer:
    ViewBag.TipoPessoa = new SelectList(db.TipoPessoa, "TipoPessoaID", "Descricao", pessoa.TipoPessoaID);
    e na view assim:

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoa, String.Empty, htmlAttributes: new { style = "width:95px;" })
    funciona...

    Pelo jeito estava dando confussão no TipoPessoaID...

    Valeu pela ajuda galera...

    abs

    Marlon Tiedt
    www.sesmt.com.br

    • Marcado como Resposta Marlon Tiedt segunda-feira, 29 de outubro de 2012 13:29
    segunda-feira, 29 de outubro de 2012 13:29

Todas as Respostas

  • Tenta assim:

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoaID, htmlAttributes: new { style = "width:95px;" })

    http://www.linkedin.com/pub/murilo-kunze/44/191/455


    • Editado Murilo Kunze sexta-feira, 26 de outubro de 2012 12:52
    sexta-feira, 26 de outubro de 2012 12:45
  • O problema sem o String.Empty, ele não deixa o primeiro registro em branco. Da forma que você passou funciona, mas tem este detalhe que lhe falei.

    abs

    Marlon Tiedt
    www.sesmt.com.br

    sexta-feira, 26 de outubro de 2012 13:00
  • Marlon, o string.Empty será o parametro optionLabel do método DropDownList, ou seja, aquilo será o primeiro <option> do <select>.

    Se você quer que venha algum <option> selecionado, você tem que fazer isso quando você cria o SelectList.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    sexta-feira, 26 de outubro de 2012 13:08
  • Olá, Murilo,

    a origem de ambos DropDownList é a mesma, porém quando uso String.Empty este não seleciona o valor, mesmo setado no SelectList.

    Assim ok:

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoaID, htmlAttributes: new { style = "width:95px;" })

    Assim não seleciona:

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoaID, String.Empty, htmlAttributes: new { style = "width:95px;" })
    abs

    Marlon Tiedt
    www.sesmt.com.br

    sexta-feira, 26 de outubro de 2012 13:36
  • Mas este é comportamento padrão mesmo, você colocando string.Empty ele irá criar um <option> a mais.

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    sexta-feira, 26 de outubro de 2012 13:40
  • Sim, mas se estou pedindo para ele selecionar um valor da lista, porque ele não selecionou?

    abs

    Marlon Tiedt
    www.sesmt.com.br

    sexta-feira, 26 de outubro de 2012 13:53
  • Porque isso você tem que fazer na classe SelectList e não no método DropDownList:

                var clients = new List<Person>{
                    new Person{Id= 1, Name= "a"},
                    new Person{Id= 2, Name= "b"},
                    new Person{Id= 3, Name= "c"}
                };
    
                ViewBag.Lista = new SelectList(clients, "Id", "Name", clients[1]);

    Neste caso o client[1] apareceria selecionado.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    sexta-feira, 26 de outubro de 2012 14:37
  • Murilo, a minha dúvida é porque  quando uso String.Empty este não seleciona o valor.
    Aqui está meu controller:

    ViewBag.TipoPessoaID = new SelectList(db.TipoPessoa, "TipoPessoaID", "Descricao", pessoa.TipoPessoaID);

    Como você pode visualizar, já seto o pessoa.TipoPessoaID.

    Quando na view eu uso

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoaID, htmlAttributes: new { style = "width:95px;" })

    o DropDownList vem preenchido.
    Porém quando uso

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoaID, String.Empty, htmlAttributes: new { style = "width:95px;" })


    ele não preenche o DropDownList.

    Isto que é a minha dúvida...Porque não funciona igual o processo.

    abs


    Marlon Tiedt
    www.sesmt.com.br

    sexta-feira, 26 de outubro de 2012 15:59
  • Ele não traz nada nos <option> ? É isso?

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    sexta-feira, 26 de outubro de 2012 16:01
  • Ele traz tudo certinho, todos os registros. Mas somente não seleciona o registro informado. Ele não marca selected no segundo caso.

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoaID, htmlAttributes: new { style = "width:95px;" })

    Deste jeito o DropListBox, tem o registro "Física" selecionado.

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoaID, String.Empty, htmlAttributes: new { style = "width:95px;" })

    Assim não traz "Fisica" selecionado.

    Ambos os casos usando o mesmo ViewBang.

    abs


    Marlon Tiedt
    www.sesmt.com.br

    sexta-feira, 26 de outubro de 2012 16:27
  • Então não sei cara :(

    Teria que dar uma boa olhada no código.

    Fiz uns testes aqui e funcionou.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455


    • Editado Murilo Kunze sexta-feira, 26 de outubro de 2012 17:15
    sexta-feira, 26 de outubro de 2012 17:15
  • Murilo, descobri o problema...O algo estava se perdendo..

    Se eu fizer no controller assim:

    ViewBag.TipoPessoaID = new SelectList(db.TipoPessoa, "TipoPessoaID", "Descricao", pessoa.TipoPessoaID);
    e na view assim:

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoaID, String.Empty, htmlAttributes: new { style = "width:95px;" })
    ele não seta os dados...

    Porém se no controller fazer:
    ViewBag.TipoPessoa = new SelectList(db.TipoPessoa, "TipoPessoaID", "Descricao", pessoa.TipoPessoaID);
    e na view assim:

    @Html.DropDownList("TipoPessoaID", (SelectList)ViewBag.TipoPessoa, String.Empty, htmlAttributes: new { style = "width:95px;" })
    funciona...

    Pelo jeito estava dando confussão no TipoPessoaID...

    Valeu pela ajuda galera...

    abs

    Marlon Tiedt
    www.sesmt.com.br

    • Marcado como Resposta Marlon Tiedt segunda-feira, 29 de outubro de 2012 13:29
    segunda-feira, 29 de outubro de 2012 13:29
  • Show :)

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    segunda-feira, 29 de outubro de 2012 13:35