none
criar dropdownlist a partir da seleção de outro dropdownlist RRS feed

  • Pergunta

  • Olá amigos,

    Eu tenho um formulario de cadastro de usuarios. tenho um dropdownlist de empresas que aparecem todas as empresas.
    Tenho outro dropdownlist com as areas cadastradas nestas empresas.
    Eu preciso que, quando eu for adicionar um novo usuario, ao selecionar uma empresa, o dropdownlist das areas só exiba as areas referentes àquela empresa selecionada. como eu faço isso?

    Eu tentei implementar mas dá erro dizendo que empresas não está fazendo referencia a nada.

    //
        // View Class Model
        public class UsuarioFormViewModel
        {
            // Properties
            public Usuario usuarios { get; private set; }
            public Area Area = new Area();
            public Empresa Empresa = new Empresa();
            public AreaRepositorio arearep = new AreaRepositorio();
            public EmpresaRepositorio empresarep = new EmpresaRepositorio();
            public SelectList cod_area { get; private set; }
            public SelectList cod_empresa { get; private set; }
            // Constructor
            public UsuarioFormViewModel(Usuario Usuarios)
            {
                usuarios = Usuarios;
    
                if (Usuarios.cod_area == 0)
                {
                    cod_empresa = new SelectList(empresarep.SelecionarTodas(), "cod_empresa", "nome");
                    cod_area = new SelectList(arearep.SelecionarTodas(), "cod_area", "descricao");
    
                }
                else
                {
                    cod_empresa = new SelectList(empresarep.SelecionarTodas(), "cod_empresa", "nome", Area.cod_empresa);
                    cod_area = new SelectList(arearep.SelecionarAreasDeEmpresa(Empresa.cod_empresa), "cod_area", "descricao", Usuarios.cod_area);
                }
    
                Empresa = empresarep.SelecionarEmpresa(Area.cod_empresa);
                Area = arearep.SelecionarArea(usuarios.cod_area);
            }
        }
    sexta-feira, 4 de setembro de 2009 19:24

Respostas

  • Bem, como meu projeto com mvc está parado, vou fechar o post.

    Se eu precisar mais a frente, eu falo com voces novamente.

    Obrigado.
    • Marcado como Resposta joaoluizbt quinta-feira, 1 de outubro de 2009 13:42
    quinta-feira, 1 de outubro de 2009 13:42

Todas as Respostas

  • Ola!

    Ficaria mais ou menos assim...

    1 - Carregue o dropdownlist de empresa preenchendo o "datatextfiled" com o nome da empresa e o "datavaluefield" com o id (primari key), esse drop downlist devera ser autopostback = true, pois o usuario selecionar uma opção ira disparar o evento "selectchange"

    2 - No metodo "selectchange" recupere o value seleciona no drop, ddlEmpresas.SelectItem.value, e faça uma busca no banco de dados com esse id.

    3 - Preenche o drop de areas com a lista retornada...


    []s

    Att,

    Israel Gonçalves

    "Ajudou ? Marque como resposta! ^^".
    sexta-feira, 4 de setembro de 2009 19:29
  • Eu estou programando em MVC, tenho que utilizar a camada de controle para fazer isso.

    Preciso entender a lógica deste procedimento para eu adaptar para o MVC.
    sexta-feira, 4 de setembro de 2009 19:31
  • Olá,

    Se entendi bem, o que você quer é fazer Cascading DropDownLists no MVC certo ?

    Se sim : http://www.google.com.br/search?hl=pt-BR&source=hp&q=Cascading+DropDownList+MVC&meta=&aq=f&oq=

    espero que ajude
    []s

    http://www.marceloramos.net/Blog


    Marcelo Ramos
    domingo, 6 de setembro de 2009 19:13
  • Olá,

    Eu tentei rodar outros tipos de implementação mas não deram certo.

    O que tem de errado no meu código?

    Por favor, me ajudem.
    terça-feira, 8 de setembro de 2009 14:07
  • Então pessoal, o negócio é o seguinte:

    Eu tenho uma tabela de usuarios onde eu cadastro nele o código da área onde ele trabalha. na tabela de areas eu cadastro o código da empresa da qual esta área pertence.

    eu consigo, na tela de cadastro de usuarios colocar dois dropdownlists, um exibindo as empresas e outro exibindo as areas.

    O cascadingdropdownlist ainda não funciona, pois quando eu seleciono uma empresa, o dropdownlist das areas continua exibindo todas as areas.

    Mesmo assim, eu selecionei manualmente a empresa correspondente a area que eu selecionei para cadastrar no usuario novo.

    Quando eu tentei salvar, a tela continuou lá, sem salvar com os campos preenchidos, menos o dropdownlist das empresas.

    Pergunto:
    Eu coloquei o dropdownlist da empresa lá só para poder fazer o cascading, na verdade não vou gravar a informação da empresa em lugar nenhum.
    Isso é um problema na hora de gravar as informações?

    Eu não posso ter objetos que apenas exibam informações que não serão gravadas na tabela?

    Seguem os códigos de controle e view desta situação:

    CONTROLLER
        // View Class Model
        public class UsuarioFormViewModel
        {
            // Properties
    
            public AreaRepositorio arearep = new AreaRepositorio();
            public EmpresaRepositorio empresarep = new EmpresaRepositorio();
    
            public Usuario usuarios { get; private set; }
            public Empresa Empresa = new Empresa();
            public Area Area = new Area();
    
            public SelectList cod_area { get; private set; }
            public SelectList cod_empresa { get; private set; }
    
            // Constructor
            public UsuarioFormViewModel(Usuario Usuarios)
            {
                usuarios = Usuarios;
                Empresa = empresarep.SelecionarEmpresa(Area.cod_empresa);
                Area = arearep.SelecionarArea(usuarios.cod_area); 
    
                cod_empresa = new SelectList(empresarep.SelecionarTodas(), "cod_empresa", "nome");
                cod_area = new SelectList(arearep.SelecionarTodas(), "cod_area", "descricao", Usuarios.cod_area);
            }
        }
    VIEW
     <% using (Html.BeginForm()) {%>
    
            <fieldset>
                <p>
                    <label for="nome">Nome:</label>
                    <%= Html.TextBox("nome", Model.usuarios.nome)%>
                    <%= Html.ValidationMessage("nome", "*") %>
                </p>
                <p>
                    <label for="login">Login:</label>
                    <%= Html.TextBox("login", Model.usuarios.login)%>
                    <%= Html.ValidationMessage("login", "*") %>
                </p>
                <p>
                    <label for="senha">Senha:</label>
                    <%= Html.TextBox("senha", Model.usuarios.senha)%>
                    <%= Html.ValidationMessage("senha", "*") %>
                </p>
                <p>
                    <label for="cod_area">Empresa em que trabalha:</label>
                    <%= Html.DropDownList("cod_empresa", "Selecione uma empresa") %>                
                    <%= Html.ValidationMessage("cod_empresa", "*") %>
                </p>
                <p>
                    <label for="cod_area">Area em que trabalha:</label>
                    <%= Html.DropDownList("cod_area", "Selecione uma area") %>                
                    <%= Html.ValidationMessage("cod_area", "*") %>
                </p>
                <div>
                    <a href="/usuario"><img class="image" src="../../Content/img/voltar.jpg" alt="Voltar aos usuários"/></a>
                    <input class="image" type="image" src="../../Content/img/salvar.jpg" alt="Salvar"/>
                </div>
            </fieldset>
            
        <% } %>
    Obrigado.
    terça-feira, 8 de setembro de 2009 14:17
  • Por favor, amigos, realmente preciso de ajuda aqui!
    quarta-feira, 9 de setembro de 2009 10:49
  • Bem, como meu projeto com mvc está parado, vou fechar o post.

    Se eu precisar mais a frente, eu falo com voces novamente.

    Obrigado.
    • Marcado como Resposta joaoluizbt quinta-feira, 1 de outubro de 2009 13:42
    quinta-feira, 1 de outubro de 2009 13:42