entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Cambiar La lista de DropDownList en el evento OnChange

buen día

tengo el siguiente código para asignado a un listado a mi DropDownList desde el controller

ViewBag.Ciudad = new SelectList(GetCiudadAll, "idCiudad", "NombreCiudad");
en la vista

@Html.DropDownList("Ciudad", (SelectList)ViewBag.Ciudad, "-- Seleccione Ciudad --", new { @class = "form-control", required = "required" })
pero se necesita que para ciertos tipos de Impuesto se cambie el listado de ciudades para esto realizo esto en la vista

 $(document).ready(function () {

        $('#TipoImpuesto').change(function () {
            if ($('#TipoImpuesto').val() == ('CO3')) {
                $('#Ciudad').find('option').remove();

                var CiudadICA = ['MEDELLIN', 'BOGOTA', 'CALI', 'APARTADO', 'YOPAL'];

                $.each(CiudadICA, function (index, value) {
                    var option = $('<option value="' + value + '">' + value + '</option>');
                    $('#Ciudad').append(option);
                });
            }
            else {
                $('#Ciudad').find('option').remove();
                $.ajax({
                    url: '@Url.Action("GenerarCertificado", "GenerarCertificado")',
                    data: JSON.parse('new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ViewBag.Ciudad)'),
                    dataType: 'json',
                    type: 'POST',
                    contentType: 'application/json',
                    success: function (data) {
                        $.each(data, function (index, value) {
                            var option = $('<option value="' + index + '">' + value + '</option>');
                            $('#Ciudad').append(option);
                        });
                    },
                    error: function (data, status, jqXHR) {
                        alert('Error al cargar Ciudades.');
                    }
                }); // end $.ajax
            }
        });

deseo realizar una llamada ajax al action (usando $.ajax de jquery) que retorne un json con las ciudades, en el Codicional ELSE entonces iterar el json y usas el mismo codigo que define los options del combo; pero no SÉ como Hacer esto soy novato con jquery y javascript

1 Respuesta

2votos

german Puntos1770

el problema venia desde el controller...

     public async Task<JsonResult> GetDataCiudades()//
        {
            var CiudadesJson = await db.ciudad.ToListAsync();

            JavaScriptSerializer jss = new JavaScriptSerializer();
            string resultat_Json = jss.Serialize(CiudadesJson);

            return Json(resultat_Json);
        }

simplemente era una sola linea sin mas...

      public async Task<JsonResult> GetDataCiudades()//
        {
            return Json(await db.ciudad.ToListAsync());
        }

1voto

Peter comentado

Gracias por compartir la solución.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta