DROPDOWNLIST VINDO DO BANCO COM RAZOR
Boa Noite Galera alguém algum link ou dica de como fazer um dropdownlist com informações vindo do Banco?
Eduardo Silva
Curtidas 0
Melhor post
Joel Rodrigues
06/06/2014
Rapaz, eu estou fazendo da seguinte forma na action:
Onde:
- ViewBag.TiposPendencia: uma variável na ViewBag que contém a lista que será usada para montar a DropDownList na view;
- db.TbPENDENCIA_TIPO: minha tabela no banco, usando EF;
- "PenTipCODIGO": o campo que é chave na lista;
- "PenTipDESCRICAO": o campo que deve ser listado na DropDownList;
E na view:
Onde:
- model.PenTipCODIGO: é o campo na tabela principal que se relaciona com a tabela de tipos;
- (SelectList)ViewBag.TiposPendencia: variável que foi criada lá na action. É preciso fazer o cast, pois as variáveis da viewbag são dinâmicas e não tipadas.
Espero que ajude.
ViewBag.TiposPendencia = new SelectList(db.TbPENDENCIA_TIPO, "PenTipCODIGO", "PenTipDESCRICAO");
Onde:
- ViewBag.TiposPendencia: uma variável na ViewBag que contém a lista que será usada para montar a DropDownList na view;
- db.TbPENDENCIA_TIPO: minha tabela no banco, usando EF;
- "PenTipCODIGO": o campo que é chave na lista;
- "PenTipDESCRICAO": o campo que deve ser listado na DropDownList;
E na view:
@Html.DropDownListFor(model => model.PenTipCODIGO, (SelectList)ViewBag.TiposPendencia, new { @class = "form-control"})
Onde:
- model.PenTipCODIGO: é o campo na tabela principal que se relaciona com a tabela de tipos;
- (SelectList)ViewBag.TiposPendencia: variável que foi criada lá na action. É preciso fazer o cast, pois as variáveis da viewbag são dinâmicas e não tipadas.
Espero que ajude.
GOSTEI 2
Mais Respostas
Kelvin Ott
05/06/2014
Bom dia, tenta dessa forma:
no resultado você irá adicionar os dados vindo do banco, que deverá vir com um código e uma descricao.
no resultado você irá adicionar os dados vindo do banco, que deverá vir com um código e uma descricao.
DropDownList suaDropDownList = new DropDownList(); DataTable resultado = new DataTable(); suaDropDownList.DataSource = resultado; suaDropDownList.DataTextField = "Descricao"; suaDropDownList.DataValueField = "Codigo";
GOSTEI 1
Eduardo Silva
05/06/2014
Obrigado Kelvin Ott & Joel Rodrigues.
Fiz aqui da Forma do Joel mesmo, vlw pela força.
Estou fazendo uma tela, que tem um cadastro com um select de estados e com um jquery eu listo as cidades daquele estado.
Funcionou dboa..
Abç galera
Fiz aqui da Forma do Joel mesmo, vlw pela força.
Estou fazendo uma tela, que tem um cadastro com um select de estados e com um jquery eu listo as cidades daquele estado.
Funcionou dboa..
Abç galera
GOSTEI 0
Eduardo Silva
05/06/2014
CONTROLE
public ActionResult loginInteressado()
{
//ViewBag.ds_bairro = new SelectList(listaEstados(), "UF_ESTADO", "NM_ESTADO");
ViewBag.ds_bairro = new SelectList(listaEstados(), "UF_ESTADO", "NM_ESTADO");
return View();
}
public List<EstadoModel> listaEstados()
{
List<EstadoModel> listaEstado = new List<EstadoModel>();
try
{
EstadoDal c = new EstadoDal();
foreach (Estado il in c.ListarEstado())
{
EstadoModel Model = new EstadoModel();
Model.UF_ESTADO = il.UF_ESTADO;
Model.NM_ESTADO = il.NM_ESTADO;
listaEstado.Add(Model);
}
}
catch (Exception e)
{
ViewBag.Mensagem = e.Message;
}
return listaEstado;
}
VIEW
<td>@Html.DropDownList("ds_bairro", "SELECIONE UMA CIDADE")</td>
NA HORA DE SALVAR DA ESSE ERRO.
ERRO: {"There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'ds_bairro'."}
public ActionResult loginInteressado()
{
//ViewBag.ds_bairro = new SelectList(listaEstados(), "UF_ESTADO", "NM_ESTADO");
ViewBag.ds_bairro = new SelectList(listaEstados(), "UF_ESTADO", "NM_ESTADO");
return View();
}
public List<EstadoModel> listaEstados()
{
List<EstadoModel> listaEstado = new List<EstadoModel>();
try
{
EstadoDal c = new EstadoDal();
foreach (Estado il in c.ListarEstado())
{
EstadoModel Model = new EstadoModel();
Model.UF_ESTADO = il.UF_ESTADO;
Model.NM_ESTADO = il.NM_ESTADO;
listaEstado.Add(Model);
}
}
catch (Exception e)
{
ViewBag.Mensagem = e.Message;
}
return listaEstado;
}
VIEW
<td>@Html.DropDownList("ds_bairro", "SELECIONE UMA CIDADE")</td>
NA HORA DE SALVAR DA ESSE ERRO.
ERRO: {"There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'ds_bairro'."}
GOSTEI 0
Joel Rodrigues
05/06/2014
Experimente colocar ele na ViewBag e fazer semelhante ao que eu fiz no exemplo:
no lugar de "de_bairro".
(SelectList)ViewBag.MINHALISTA
no lugar de "de_bairro".
GOSTEI 0
Eduardo Silva
05/06/2014
Coloquei dessa forma na view
<td> @Html.DropDownListfor(c => c.Municipio, (SelectList)ViewBag.ds_bairro) </td>
da o mesmo erro ai tentei no controller.
public ActionResult loginInteressado()
{
ViewBag.ds_bairro = new SelectList((SelectList)ViewBag.listaEstados(), "UF_ESTADO", "NM_ESTADO");
return View();
}
Da erro de (Não é possível fazer associação em tempo de execução em uma refência nula)
<td> @Html.DropDownListfor(c => c.Municipio, (SelectList)ViewBag.ds_bairro) </td>
da o mesmo erro ai tentei no controller.
public ActionResult loginInteressado()
{
ViewBag.ds_bairro = new SelectList((SelectList)ViewBag.listaEstados(), "UF_ESTADO", "NM_ESTADO");
return View();
}
Da erro de (Não é possível fazer associação em tempo de execução em uma refência nula)
GOSTEI 0
Eduardo Silva
05/06/2014
Agora eu resolvi vlw Joel Rodrigues.
Era o redirecionamento para mesma página ao cadastrar, eu tinha feito isso para não precisar ficar voltando ao cadastrar.
Abç
Era o redirecionamento para mesma página ao cadastrar, eu tinha feito isso para não precisar ficar voltando ao cadastrar.
Abç
GOSTEI 0
Joel Rodrigues
05/06/2014
Show de bola então.
Abraço e bons códigos.
Abraço e bons códigos.
GOSTEI 0
Eduardo Silva
05/06/2014
Descobri o erro e encontrei outro pior rs.
public ActionResult loginInteressado()
{
ViewBag.ds_bairro = new SelectList((SelectList)ViewBag.listaEstados(), "UF_ESTADO", "NM_ESTADO");
return View();
}
tem como eu colocar pra executar esse ViewBag.ds_bairro apensa uma vez?
public ActionResult loginInteressado()
{
ViewBag.ds_bairro = new SelectList((SelectList)ViewBag.listaEstados(), "UF_ESTADO", "NM_ESTADO");
return View();
}
tem como eu colocar pra executar esse ViewBag.ds_bairro apensa uma vez?
GOSTEI 0
Eduardo Silva
05/06/2014
Bagulho ficou doido rs.
Meu erro é outro, quando vou cadastrar a partir de um formulário se eu der um redirectToAction("logininteressado", "Home");
ele funciona porque executa o ViewBag.ds_bairro = new SelectList((SelectList)ViewBag.listaEstados(), "UF_ESTADO", "NM_ESTADO"); porem não valida.
mais se eu fizer um ModelState.isValid e retornar para view("logininteressado")
da erro devido a NÃO EXECUÇÃO do ViewBag.ds_bairro = new SelectList((SelectList)ViewBag.listaEstados(), "UF_ESTADO", "NM_ESTADO");
pois ele joga direto para a página...
tenho que fazer a validação de outra forma? ou teria uma solução melhor para isso??
Meu erro é outro, quando vou cadastrar a partir de um formulário se eu der um redirectToAction("logininteressado", "Home");
ele funciona porque executa o ViewBag.ds_bairro = new SelectList((SelectList)ViewBag.listaEstados(), "UF_ESTADO", "NM_ESTADO"); porem não valida.
mais se eu fizer um ModelState.isValid e retornar para view("logininteressado")
da erro devido a NÃO EXECUÇÃO do ViewBag.ds_bairro = new SelectList((SelectList)ViewBag.listaEstados(), "UF_ESTADO", "NM_ESTADO");
pois ele joga direto para a página...
tenho que fazer a validação de outra forma? ou teria uma solução melhor para isso??
GOSTEI 0
Joel Rodrigues
05/06/2014
Rapaz, na prática eu descobri que se você usa a variável da ViewBag em algum momento, então ela precisa estar sempre disponível. Ou seja, toda action que chamar aquela view tem que criar essa variável na ViewBag, senão a View não vai encontrar a SelectList.
GOSTEI 0
Eduardo Silva
05/06/2014
existe outra alternativa?
GOSTEI 0
Eduardo Silva
05/06/2014
realmente brother funcionou,
Cara tu tem curso online? tu é foda para ensinar!! parabéns.
Te add até no linkedin rs.
Abç
Cara tu tem curso online? tu é foda para ensinar!! parabéns.
Te add até no linkedin rs.
Abç
GOSTEI 0
Joel Rodrigues
05/06/2014
existe outra alternativa?
Aí uma boa pergunta. rsrsrsVou confessar que não sei (nem procurei, para ser sincero, mas farei isso um dia).
GOSTEI 0
Joel Rodrigues
05/06/2014
realmente brother funcionou,
Cara tu tem curso online? tu é foda para ensinar!! parabéns.
Te add até no linkedin rs.
Abç
Cara tu tem curso online? tu é foda para ensinar!! parabéns.
Te add até no linkedin rs.
Abç
Opa, que bom que funcionou. Isso eu descobri na prática aqui, pelo método da tentativa e erro.
Ah, não tenho curso não, mas de vez em quando escrevo uns posts por aí (Linha de Código, .NET Coders, DevMedia, Mr. Bool).
Temos alguns cursos aqui na DevMedia, mas se de repente você tiver alguma dificuldade ou ideia de tema que ache interessante, me passa que posso tentar escrever um post ou gravar um vídeo aí pra ajudar.
Um abraço e bons códigos.
GOSTEI 0
ômega Ltda
05/06/2014
Joel boa tarde! Desculpe a pergunta, mas nesse formato que você criou a ViewBag ficará dentro da View correto? Como faço para ele "Achar" o banco? No meu caso só está aparecendo a opção DbNull.
GOSTEI 0
ômega Ltda
05/06/2014
Ja deu certo! Agradeço!
GOSTEI 0