DROPDOWNLIST VINDO DO BANCO COM RAZOR

.NET

05/06/2014

Boa Noite Galera alguém algum link ou dica de como fazer um dropdownlist com informações vindo do Banco?
Eduardo Silva

Eduardo Silva

Curtidas 0

Melhor post

Joel Rodrigues

Joel Rodrigues

06/06/2014

Rapaz, eu estou fazendo da seguinte forma na action:
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

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.

DropDownList suaDropDownList = new DropDownList();
            DataTable resultado = new DataTable();

            suaDropDownList.DataSource = resultado;
            suaDropDownList.DataTextField = "Descricao";
            suaDropDownList.DataValueField = "Codigo";
GOSTEI 1
Eduardo Silva

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
GOSTEI 0
Eduardo Silva

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'."}
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

05/06/2014

Experimente colocar ele na ViewBag e fazer semelhante ao que eu fiz no exemplo:
(SelectList)ViewBag.MINHALISTA

no lugar de "de_bairro".
GOSTEI 0
Eduardo Silva

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)
GOSTEI 0
Eduardo Silva

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ç
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

05/06/2014

Show de bola então.
Abraço e bons códigos.
GOSTEI 0
Eduardo Silva

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?
GOSTEI 0
Eduardo Silva

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??
GOSTEI 0
Joel Rodrigues

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

Eduardo Silva

05/06/2014

existe outra alternativa?
GOSTEI 0
Eduardo Silva

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ç
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

05/06/2014

existe outra alternativa?
Aí uma boa pergunta. rsrsrs
Vou confessar que não sei (nem procurei, para ser sincero, mas farei isso um dia).
GOSTEI 0
Joel Rodrigues

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ç

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

ô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

ômega Ltda

05/06/2014

Ja deu certo! Agradeço!
GOSTEI 0
POSTAR