Usuário com melhor resposta
criar dropdownlist a partir da seleção de outro dropdownlist

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); } }
- Movido C. Augusto Proiete [MVP]Moderator sexta-feira, 2 de outubro de 2009 00:54 Movendo para fórum apropriado (De:ASP .NET)
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
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! ^^". -
-
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 -
-
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. -
-
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