none
Montar um DROPDOWNLIST usando conexão ADO.NET RRS feed

  • Pergunta

  • Ola Pessoal, tenho procurado na internet, algo que pudesse orientar-me no do funcionamento do dropdownlist, mais todos os exemplos que tenho visto , são todos usando entity framework, tentei adaptar a minha programação, gostaria de estar populando minha dropdownlist usando ADO.NET, tenho feito dessa maneira, so que não estou tendo sucesso, quem puder me orientar, agradeço.

    DOMINIO
            public int CidadeId { get; set; }
            public int CidadeNome { get; set; }

    CONTROLLER
     public ActionResult ListCidades(TbCadMunicipio cadmunicipio)
            {
                List<Dominio.TbCadMunicipio> cidadeList = new List<Dominio.TbCadMunicipio>();

                ViewBag.TbCadMunicipio = cidadeList;
                return View(new List<Dominio.TbCadMunicipio>());
            }

    APLICACAO
    public StaticPagedList<TbCadMunicipio> ListCidadex()
            {

                String Sql = "SELECT  ";
                Sql += " Id, Nome";
                Sql += " FROM Tb_Cidades  ";
                Sql += " ORDER BY Nome";
                IList<TbCadMunicipio> cadmunicipios = new List<TbCadMunicipio>();
                int TotalItens = 0; 
                using (SqlCommand Command = Connection.Command())
                {
                    Command.CommandType = System.Data.CommandType.Text;
                    Command.CommandText = Sql;
                    using (SqlDataReader Reader = Command.ExecuteReader())
                    {
                        if (Reader.HasRows)
                        {
                            while (Reader.Read())
                            {
                                cadmunicipios.Add(new TbCadMunicipio()
                                {

                                     CidadeId = Reader.GetInt32(1),
                                     CidadeNome = Reader.GetString(2)
                                });
                            }
                        }
                    }
                }
                return new StaticPagedList<TbMunicipio>(cadmunicipios);
            }


    • Editado AR_62 segunda-feira, 9 de novembro de 2015 16:22
    segunda-feira, 9 de novembro de 2015 16:21

Respostas

  • Para preenchimento de um DropDownList em MVC é simples e não precisa de um StaticPagedList que é um paginador de resultados, acredito o erro seu está ai !!!

    Como seria:

    Tenho um classe Modelo assim:

    public class Credit
    {        
    	public int CreditId { get; set; }
    	public string Description { get; set; }
    }

    Ela seria preenchida em um Lista de Credit dessa forma com ADO.NET

    public IEnumerable<Credit> All()
    {
    	using (SqlCommand command = Connection.CreateCommand())
    	{
    		command.CommandText = "SELECT CreditId, Description FROM Credit ORDER BY Description";
    		command.CommandType = CommandType.Text;
    		using (SqlDataReader reader = command.ExecuteReader())
    		{
    			while (reader.Read())
    			{
    				yield return new Credit(reader.GetInt32(0), reader.GetString(1));
    			}
    		}
    	}
    }

    Ou seja, como você está usando!

    Para funcionar crie no seu Controller Método assim:

    ViewBag.Credit = new SelectList(DalCredit.All(), "CreditId", "Description");
    Perceba que o ViewBag.Credit é a sua principal referencia que servirá no seu DropDownList

    <p>
        @Html.DropDownList("Credit")
    </p>
    !




    Fulvio C

    • Sugerido como Resposta SimorC terça-feira, 10 de novembro de 2015 00:27
    • Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 15:57
    segunda-feira, 9 de novembro de 2015 23:14

Todas as Respostas

  • Boa tarde.

    Ao chamar o método na primeira linha do Controller ele não funciona?

    List<Dominio.TbCadMunicipio> cidadeList = "objeto".ListCidadex();

    E por curiosidade... Por que não queres usar o EntityFramework?

    Edit:

    Outro detalhe: Por que colocar a lista na ViewBag se tu podes passar ela ao retornar a View?

    return View(cidadeList);

    Aliás, possivelmente terias que colocar o tipo correto ou converter antes de isso funcionar (StaticPagedList para List, no caso).


    Att., Rafael Simor


    • Editado SimorC segunda-feira, 9 de novembro de 2015 17:15
    segunda-feira, 9 de novembro de 2015 17:11
  • Ola, Rafael, como não tenho tanto conhecimento ainda, estou adequando a programação, poderia orientar-me no sentido de como montar baseado no que já tenho feito, caso seja possível, grato
    segunda-feira, 9 de novembro de 2015 18:49
  • Ola Pessoal, tenho procurado na internet, algo que pudesse orientar-me no do funcionamento do dropdownlist, mais todos os exemplos que tenho visto , são todos usando entity framework, tentei adaptar a minha programação, gostaria de estar populando minha dropdownlist usando ADO.NET, tenho feito dessa maneira, so que não estou tendo sucesso, quem puder me orientar, agradeço.

    DOMINIO
            public int CidadeId { get; set; }
            public int CidadeNome { get; set; }

    CONTROLLER
     public ActionResult ListCidades(TbCadMunicipio cadmunicipio)
            {
                List<Dominio.TbCadMunicipio> cidadeList = new List<Dominio.TbCadMunicipio>();

                ViewBag.TbCadMunicipio = cidadeList;
                return View(new List<Dominio.TbCadMunicipio>());
            }

    APLICACAO
    public StaticPagedList<TbCadMunicipio> ListCidadex()
            {

                String Sql = "SELECT  ";
                Sql += " Id, Nome";
                Sql += " FROM Tb_Cidades  ";
                Sql += " ORDER BY Nome";
                IList<TbCadMunicipio> cadmunicipios = new List<TbCadMunicipio>();
                int TotalItens = 0; 
                using (SqlCommand Command = Connection.Command())
                {
                    Command.CommandType = System.Data.CommandType.Text;
                    Command.CommandText = Sql;
                    using (SqlDataReader Reader = Command.ExecuteReader())
                    {
                        if (Reader.HasRows)
                        {
                            while (Reader.Read())
                            {
                                cadmunicipios.Add(new TbCadMunicipio()
                                {

                                     CidadeId = Reader.GetInt32(1),
                                     CidadeNome = Reader.GetString(2)
                                });
                            }
                        }
                    }
                }
                return new StaticPagedList<TbMunicipio>(cadmunicipios);
            }


    Oi,

    Você esta desenvolvendo uma aplicação MVC ASP.NET ?


    segunda-feira, 9 de novembro de 2015 21:17
  • Para preenchimento de um DropDownList em MVC é simples e não precisa de um StaticPagedList que é um paginador de resultados, acredito o erro seu está ai !!!

    Como seria:

    Tenho um classe Modelo assim:

    public class Credit
    {        
    	public int CreditId { get; set; }
    	public string Description { get; set; }
    }

    Ela seria preenchida em um Lista de Credit dessa forma com ADO.NET

    public IEnumerable<Credit> All()
    {
    	using (SqlCommand command = Connection.CreateCommand())
    	{
    		command.CommandText = "SELECT CreditId, Description FROM Credit ORDER BY Description";
    		command.CommandType = CommandType.Text;
    		using (SqlDataReader reader = command.ExecuteReader())
    		{
    			while (reader.Read())
    			{
    				yield return new Credit(reader.GetInt32(0), reader.GetString(1));
    			}
    		}
    	}
    }

    Ou seja, como você está usando!

    Para funcionar crie no seu Controller Método assim:

    ViewBag.Credit = new SelectList(DalCredit.All(), "CreditId", "Description");
    Perceba que o ViewBag.Credit é a sua principal referencia que servirá no seu DropDownList

    <p>
        @Html.DropDownList("Credit")
    </p>
    !




    Fulvio C

    • Sugerido como Resposta SimorC terça-feira, 10 de novembro de 2015 00:27
    • Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 15:57
    segunda-feira, 9 de novembro de 2015 23:14
  • Ola Richof,estou usando ASP.NET MVC, caso tenha algum exemplo prático em que possa estar direcionando-me para que eu possa estar adequando as minhas necessidades, fico grato.
    terça-feira, 10 de novembro de 2015 10:56
  • Ola Fulvio,  estou tendo algumas dificuldades nessas duas linhas caso possa estar verificando o que possa estar ocorrendo e orientar, agradeço

    VIEW
    @Html.DropDownListFor(model => model.Nome, new MultiSelectList(TbCadMunicipio))
    Ocorre erro quando inserido na MULTISELECTLIST(TbCadMunicipio) <== Não existe contexto corrente para TbCadMunicipio

    CONTROLER
    public ActionResult ListCidades()
    {
          ViewBag.TbCadMunicipio = new SelectList(TbCadMunicipio.All(), "Id", "Nome");
     }
    Ocorre erro apos SelectList(TbCadMunicipio.<== (ALL)  não contem definição para ALL


    APLICACAO
            public IEnumerable<TbCadMunicipio> All()
            {
                using (SqlCommand Command = Connection.Command())
                {
                    Command.CommandType = System.Data.CommandType.Text;
                    Command.CommandText += "SELECT ";
                    Command.CommandText += " Id,  ";
                    Command.CommandText += " Nome ";
                    Command.CommandText += "FROM Tb_Cidades";
                    Command.CommandText += "ORDER BY Nome ASC";
                    using (SqlDataReader Reader = Command.ExecuteReader())
                    {
                        if (Reader.HasRows)
                        {
                            while (Reader.Read())
                            {
                                yield return new TbCadMunicipio()
                                {
                                    CidadeId = Reader.GetInt32(0),
                                    CidadeNome = Reader.GetString(1)
                                };
                            }

                        }
                    }
                }
            }

    terça-feira, 10 de novembro de 2015 13:06
  • Primeiro Erro:

    Aonde você colocou All() já visto que ele reclama que não existe!?

    Aqui também tem um inconformidade:

    Se está mandando SelectList então já não precisava de mais nada! ai você vai e coloca um MultiSelectItem são dados diferentes vai dar erro mesmo!

    troque

    @Html.DropDownListFor(model => model.Nome, new MultiSelectList(TbCadMunicipio))

    por 

    @Html.DropDownListFor("TbCadMunicipio")

     

    Fulvio C

    terça-feira, 10 de novembro de 2015 13:14
  • Ola Fulvio,

    1-) Esta linha vai  gravar a opcao que eu selecionar no DropDownlist, no campo model.Nome?
    @Html.DropDownListFor("TbCadMunicipio")

    2-) Esta class que montei esta correta ou precisa identificar que é uma IEnumerable?
     public ActionResult ListCidades()
            {
                ViewBag.TbCadMunicipio = new SelectList(TbCadMunicipio.All(), "Id", "Nome");
            }
    O comando ALL <== seria o que estou puxando da minha aplicacao?. Conforme segue abaixo
     public IEnumerable<TbCadMunicipio> All()
            {
                using (SqlCommand Command = Connection.Command())
                {
                    Command.CommandType = System.Data.CommandType.Text;
                    Command.CommandText += "SELECT ";


    • Editado AR_62 terça-feira, 10 de novembro de 2015 16:16
    terça-feira, 10 de novembro de 2015 16:14
  • Ola Richof,estou usando ASP.NET MVC, caso tenha algum exemplo prático em que possa estar direcionando-me para que eu possa estar adequando as minhas necessidades, fico grato.

    Olá AL_62

    Tenho sim!, é parecido so que para Paises.

    Não precisa uma actionresult para obter os dados que serão carregados na "futura" DropDownList.

     private SelectList getPaises()
            {
                List<SelectListItem> paises = new List<SelectListItem>();
                          
                var items = Paises.ToList(); // Aqui voce vai obter os dados da su fonte (BD, XML, WebServices, etc)
                foreach (var pais in items)
                {
                    paises.Add(new SelectListItem() { Value = pais.Value, Text = pais.Value });
                }
    
                SelectList res = new SelectList(paises, "Value", "Text", string.Empty);
                return res;
            }

    Já tem a SelectList com os dados, você chama ela desde onde você quiser. Agora sim usamos uma actionresult que devolve uma View, passamos a lista de paises até a View usando a iewBag.

     public ActionResult ConsultarClima()
            {
                ModeloConsultaClima modelo = new ModeloConsultaClima();
                ViewBag.Paises = getPaises();
                return View(modelo);
            }


    Agora na View "ConsultarClima"....

     <div class="col-md-10">
                    @Html.DropDownListFor(m=>m.Pais, (SelectList)ViewBag.Paises, "Seleccionar pais")
                    @Html.ValidationMessageFor(model => model.Pais, "", new { @class = "text-danger" })
                </div>


     



    • Editado Richof quarta-feira, 11 de novembro de 2015 14:13
    quarta-feira, 11 de novembro de 2015 13:11