Necesito Refrescar una View Al usar onchage en un select. en MVC 4 razor C#

publicado por: Anonymous

tengo un problema con el uso de un

select class="selection-box large-select" name="drop" id="drop"onchange="rut()">

el cual lo estoy utilizando para enviar su valor a un

[HttpPost]        
public ActionResult MiPerfil(string pRutIn) 
{
    pFechaIn = "15/06/2014"; 
    var tipo1 = clsMW_SPB_IMF_PFL_CLT.execute(pRutIn, pFechaIn);
    return View(tipo1);            
}

para que me pueda cargar una tabla:

introducir la descripción de la imagen aquí

luego de que se cargue , el combobox me permite seleccionar otro usuario y esta tabla debería de refrescar o la pagina con los datos del usuario nuevo.
he estado intentado trabajar con AJAX.

JavaScript

function rut() {

    debugger;
    var pRutIn = $("#drop").val();
    $.ajax({
        url: '~/User/MiPerfil',
        type: 'POST',
        datatyoe: 'JSON',
        data: ({ pRutIn: +pRutIn }),
        success: function (result) {
            $("#drop").html("");
            $.each($.result), function (i, rut) {
                $("#drop").append($('<option></option>').val(drop.ondrop).html(""))
            }

        },
        error: function () {
            alert("error en la respuesta")
        }
    });
}

Cómo puedo refrescar los datos cada vez que seleccione un usuario en el combobox y también como hacer para que se refresque la página?

Actualización

Aún no realiza ningún cambio al seleccionar una opción del select, el código esta así:

function SelectionChanged() {

    debugger;
    var pRutIn = $("#drop").val();
    $.ajax({
        url: '~/User/MiPerfil',
        type: 'POST',
        dataType: 'JSON',
        data: ({ "pRutIn": pRutIn }),
        success: function (result) {
            $("#drop").html("");
            $.each($.result), function (i, rut)
            {
                $("#drop").append($('<option></option>').val(drop.ondrop).html("")) **esta parte no se si esta bien...**
                }

        },
        error: function () {
            alert("error en la respuesta")
        }
    });
}

solución

Saludos Manu Keteimporta (curioso nick), por lo que veo, se trata de actualizar solamente esa parte de la página. Para lograrlo en vez de renderizar toda la vista, hazlo con una vista parcial:

return PartialView(tipo1)

en el lado del cliente, reemplaza lo que tienes en data por esto:

data: { "pRutIn": pRutIn },

es dataType no datatyoe.

Actualización

y para llamar a la función de manera constante en cada on change del select:

$('#drop').on('change', function() {
   rut();
})

Actualización 2

Esta parte:

$.each($.result), function (i, rut)
                    {
                        $("#drop").append($('<option></option>').val(drop.ondrop).html(""))
                    }

Reemplazala por:

$.each(result, function (i, rut) {
    $('#drop').append($('<option>', { 
        value: rut.value,
        text : rut.text 
    }));
});
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *