none
setar valor inicial para um Html.DropDownList RRS feed

  • Pergunta

  • Tenho uma página onde está declarado assim meu dropdownlist

    @Html.DropDownList("dep_id", null, htmlAttributes: new { @class = "ls-field" })

    Os dados são carregados de uma tabela e tudo está funcionando, sendo que eu queria que o valor inicial desse driopdownlist fosse "selecione um departamento" value = "0" e não que ele me mostrasse o primeiro registro da tabela.


    Junior

    quarta-feira, 15 de junho de 2016 18:11

Todas as Respostas

  • e como você carrega no código?
    quarta-feira, 15 de junho de 2016 18:31
  • Assim :

    ViewBag.dep_id = new SelectList(db.DEP_DEPARTAMENTO.Where(dd => dd.cli_id == codempr).OrderBy(dd => dd.dep_nome), "dep_id", "dep_nome", uSU_USUARIO.dep_id);


    Junior

    quarta-feira, 15 de junho de 2016 19:23
  • Olá Junior,

    Já tentou declara o optionLabel?

    @Html.DropDownList("dep_id", null, htmlAttributes: new { @class = "ls-field" }, optionLabel: "Selecione um Departamento")


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    segunda-feira, 20 de junho de 2016 14:18
  • Leandro, visualmente funcionou, mais não tem como setar um valor ? preciso confirmar que o usuário selecionou uma opção, caso contrário mostro uma mensagem de erro.

    Junior

    segunda-feira, 20 de junho de 2016 17:07
  • Junior,

    Vejo 3 formas de resolver:

    1- A confirmação pode ser feita com base no valor do dropdown, validando com jQuery ficaria assim:

    $('#dep_id').val() == ''

    2 - No C# a propriedade/campo que recebe o valor do dropdown estará com o valor default, acredito que o campo seja um int, se for int o valor será 0 e se for int? será null.

    3- Ao criar a ViewBag.dep_id, você insere um registro fake na lista de departamentos:

    var depts = db.DEP_DEPARTAMENTO.Where(dd => dd.cli_id == codempr).OrderBy(dd => dd.dep_nome).ToList();

    depts.Insert(0, new DEP_DEPARTAMENTO()           

    {

    cli_id = //seu valor default,               

    dep_nome = "Selecione um Departamento"           

    });           

    ViewBag.dep_id = new SelectList(depts, "dep_id", "dep_nome", uSU_USUARIO.dep_id);

    A terceira opção você precisa trocar os objetos e campos de acordo com a sua classe, fiz um exemplo baseado no código que você postou.


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    terça-feira, 21 de junho de 2016 18:51