none
Problemas para preencher dropdowlist com ajax! RRS feed

  • Pergunta

  • Pessoal boa noite, 

    Estava tentando fazer uma consulta com ajax no banco e retornar uma lista de estados para view para preencher um dropdownlist, porém, ao tento setar no dropdown aparece no value e no text como undefined. Alguém pode me ajudar aqui esta meu código 

    public List<ESTADOS> BuscaEstados()
            {
                var consulta = from e in context.ESTADOS
                               select e;
                return consulta.ToList();

            }

    class conttroller

    public JsonResult ListaEstados()
            {

                List<ESTADOS> objEst = new List<ESTADOS>(EstadoRep.BuscaEstados());
                return Json(objEst.ToList().Select(x=>new SelectListItem{Value=x.ESTADO_ID+"",Text=x.NOME}));           
            }

     funçao ajax

    $(function () {
        $.ajax({
            type: "POST",
            url: "/Propriedades/ListaEstados",
            datatype: "json",
            success: function (data) {
                $.each(data, function () {
                    if (data.pos !== undefined) {
                        $('#Estados').append('<option value="' + this.ESTADO_ID+ '">' + this.NOME + '</option>')
                    } else { alert("nada") }
                });
            }, error: function ajaxError(data) {
                alert(data.status + ' ' + data.statusText)
            }
        });

    });

    quinta-feira, 11 de junho de 2015 22:44

Respostas

  • Bom dia Douglas,

    tente fazer o seguinte, no seu Controller coloque o código abaixo:

    public JsonResult ListaEstados()
    {
    	List<SelectListItem> comboCategoriaFuncionalExercicio = new List<SelectListItem>();
    	comboEstado.Add(new SelectListItem() { Text = "Selecione", Value = "0" });
    	foreach (var item in retorno)
    	{
    		comboEstado.Add(new SelectListItem() { Text = item.NOME, Value = item.ESTADO_ID.ToString() });
    	}
    	return Json(new SelectList(comboEstado, "Value", "Text", 0), JsonRequestBehavior.AllowGet);
    }

    E na sua View, mude a função da seguinte forma:

    $(function () {
        $.ajax({
            type: "POST",
            url: "/Propriedades/ListaEstados",
            datatype: "json",
            success: function (data) {
    			$('#Estados').html('');
    			$.each(data, function(value, option) 
    			{
    				$('#Estados').append($('<option></option>').val(option.Value).html(option.Text));
    			});  
            }, error: function ajaxError(data) {
                alert(data.status + ' ' + data.statusText)
            }
        });
    });


    Att, Lucio Rogerio


    Espero ter ajudado, se ajudei, por favor "Vote como Útil", e se resolvi seu problema, clique em "Propor como Resposta".

    sexta-feira, 12 de junho de 2015 11:49