Problems when querying Data with jQuery.DataTables ()

0

I am working with jquery.DataTables () in an Mvc application with Asp.Net

I have implemented the data query through ajax, but I have an error and I can not find where it is, since according to the documentation the name of the action result that the data brings me would be badly written.

in the Html I have the following:

<div id="GridInfoProcesos" class="display">
    <table id="TablaProcesos" class="display" style="width:100%">
        <thead>
            <tr>
                <th>Id</th>
                <th>Cliente</th>
                <th>Proceso</th>
                <th>Fecha</th>
                <th>Registros Cargados</th>
                <th>Registros Validados</th>
                <th>Registros Erroneos</th>
                <th>Estado</th>
                <th>Acciones</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>Id</th>
                <th>Cliente</th>
                <th>Proceso</th>
                <th>Fecha</th>
                <th>Registros Cargados</th>
                <th>Registros Validados</th>
                <th>Registros Erroneos</th>
                <th>Estado</th>
                <th>Acciones</th>
            </tr>
        </tfoot>
    </table>
</div>

The Ajax call is defined as follows:

    <script src="~/Scripts/DataTables/jquery.dataTables.js"></script>
<script type="text/javascript">
    $(document).ready(function () {

        //Invocamos el plug-in DataTable , indicamos que el procesamiento lo realizara a través del servidor,
        //indicamos el método y las columnas que se van a mostrar en nuestra tabla
        $('#TablaProcesos').DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": "Proceso/GetProcesosKamCliente",
            "columns": [
                { "data": "Id" },
                { "data": "Cliente" },
                { "data": "Proceso" },
                { "data": "Fecha" },
                { "data": "Cargados" },
                { "data": "Validados" },
                { "data": "Erroneos" },
                { "data": "Estado" },
                { "data": "Acciones" }
            ]
        });
    });



</script>

and finally in the controller I have the following Action Result:

        public ActionResult GetProcesosKamCliente(DataTableRequest model)
    {
        DataTableAdapter<VM_ProcesosCliente> result = new DataTableAdapter<VM_ProcesosCliente>();

        string sKamId = "1";
        string sClienteId = "1";
        int KamId = Convert.ToInt32(sKamId);
        int ClienteId = Convert.ToInt32(sClienteId);

        // obtiene los datos dessde la BD
        TW.Business.Kam.Proceso ck = new Proceso();
        List<VM_ProcesosCliente> lstProcesosKamCliente = ck.GetProcesosKamCliente(KamId, ClienteId);


        //Obtenemos el total de registros de la tabla.
        var totalRows = lstProcesosKamCliente.Count();

        Func<VM_ProcesosCliente, Object> orderByFunc = null;
        //El ordenamiento que vamos a utilizar por default va ser por el Id.
        orderByFunc = item => item.Id;

        //Dependiendo de la columna que seleccionemos indicamos si se ordena por el campo Description.
        if (model.order[0]["column"].Equals("1"))
        {
            orderByFunc = item => item.Id;
        }

        //Obtenemos el valor a buscar.
        var searchValue = "" + model.search["value"] + "";

        var queryItem = lstProcesosKamCliente.Where(d => d.Proceso.Contains(searchValue));
        List<VM_ProcesosCliente> items;
        //Indicamos cual va ser la manera en que se van a ordenar los datos.
        if (model.order[0]["dir"].Equals("desc"))
        {
            items = queryItem.OrderByDescending(orderByFunc).Skip(model.start + 1).Take(model.length).ToList();
        }
        else
        {
            items = queryItem.OrderBy(orderByFunc).Skip(model.start + 1).Take(model.length).ToList();

        }

        //Llenamos con información nuestro DataTableAdapter
        result.Data = items;
        result.Draw = model.draw;
        result.RecordsTotal = totalRows;
        result.RecordsFiltered = queryItem.Count();
        //Regresamos la respuesta Json
        return Content(JsonConvert.SerializeObject(result), "application/json");

    }

The error that appears in the debugger of Crome, is 404 (not Found)

http://localhost:2911/Kam/Proceso/GetProcesosKamCliente?draw=1&columns%5B0%5D%5Bdata%5D=Id&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=Cliente&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=Proceso&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B3%5D%5Bdata%5D=Fecha&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=true&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B4%5D%5Bdata%5D=Cargados&columns%5B4%5D%5Bname%5D=&columns%5B4%5D%5Bsearchable%5D=true&columns%5B4%5D%5Borderable%5D=true&columns%5B4%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B4%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B5%5D%5Bdata%5D=Validados&columns%5B5%5D%5Bname%5D=&columns%5B5%5D%5Bsearchable%5D=true&columns%5B5%5D%5Borderable%5D=true&columns%5B5%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B5%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B6%5D%5Bdata%5D=Erroneos&columns%5B6%5D%5Bname%5D=&columns%5B6%5D%5Bsearchable%5D=true&columns%5B6%5D%5Borderable%5D=true&columns%5B6%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B6%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B7%5D%5Bdata%5D=Estado&columns%5B7%5D%5Bname%5D=&columns%5B7%5D%5Bsearchable%5D=true&columns%5B7%5D%5Borderable%5D=true&columns%5B7%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B7%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B8%5D%5Bdata%5D=Acciones&columns%5B8%5D%5Bname%5D=&columns%5B8%5D%5Bsearchable%5D=true&columns%5B8%5D%5Borderable%5D=true&columns%5B8%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B8%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=0&order%5B0%5D%5Bdir%5D=asc&start=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1543849884874

Could someone please give me a hand with this topic? I have given it many laps, but I can not find a solution. Thanks for reading.

    
asked by Luis Gabriel Fabres 03.12.2018 в 16:16
source

1 answer

0

You have a parameter that is not sent in your table post, the ajax.

ajax:{
       url: "Proceso/GetProcesosKamCliente",
       dataSrc: { model: getModel() }
}

Where getModel () is the function that returns the DataTableRequest object. You will know how to return it.

Now, regarding your controller, you only need to generate your query. The capabilities of draw, pager, etc., are configured in the initializer of the table , along with the configuration of the columns, ajax, etc. In a few words, just send the data from the table.

    
answered by 03.12.2018 / 17:04
source