微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在数据表中分页超过2000条记录? MVC

如何解决如何在数据表中分页超过2000条记录? MVC

我需要你的帮助。
当前,我的查询返回了超过 2000条记录,在通过存储过程从sql server中获取记录后,我将它们发送到了表中(我使用了DataTables库1.10.19 )当它开始形成表格并进行相应的分页时,问题在于,要花费超过 30秒或更多的时间才能显示表格中的内容,我该如何做才能使其仅显示用户看到的结果(每页 10条记录),并计算如果用户前进到下一条记录并将以下10条记录带给我,则该页将具有的其他页数或该页的显示方式?。
这是我的代码
控制器:

 public JsonResult Get_Pacientes(int IdEstatus)
{
 List<Paciente> l = new List<Paciente>(Get_RowsPac(IdEstatus));
 var jsonResult = Json(new { success = true,lcontenedor= l},JsonRequestBehavior.AllowGet);
                    jsonResult.MaxJsonLength = int.MaxValue;
                    return jsonResult;
}

** JavaScript:**
   function ObtieneListaEmp(id) {
            $('#fader').css('display','block');
            var EnviaDatos =
            {
                //"e.CVE_EMPLEADO": $('#NOMINA').val(),"IdEstatus": id,};
            $.ajax({
                url: '../Empleado/EmpleadosXEstatus',contentType: 'application/json; charset=utf-8',type: 'POST',dataType: 'json',data: JSON.stringify(EnviaDatos),success: function (response) {
                    $('#fader').css('display','none');

                    if (response.success) {

                        AgregaTablaEmpPactest(); //this function adds the table header

                        var data = [];
                        
                        data = response.lcontenedor;
                        setTimeout(function () {
                            //aqui va la tarea
                            $('#tbl').DataTable({
                                data: data,deferRender: true,"columns": [
                                    //{ "data": "CLAVE_AFILIACION" },{ // render //clave afilacion
                                        "data": function (data,type,row,Meta) {
                                            return "<a href=\"#\" onclick='LlamaRegistro(" + '"' + data.CLAVE_AFILIACION + '"' + ")'>" + data.CLAVE_AFILIACION + "</a>";
                                        }
                                    },{ "data": "NOMINA" },{
                                        data: null,render: function (data,row) {
                                            return row.NOMBRE + ' ' + row.APELLIDO_PAT + ' ' + row.APELLIDO_MAT;
                                        }
                                    },{ "data": "TELEFONO_CASA" },{ "data": "CELULAR" },{ "data": "SECRETARIA" },{ "data": "DIRECCION" },{ "data": "PUESTO" },{ "data": "EDAD" },{ "data": "OBSERVACION" },{ "data": "FECHA_SEG" },{ "data": "DESC_ESTATUS_EVO" },{ "data": "FECHA_PRUEBA" },{ "data": "FECHA_RESULTADO" },{ "data": "LUGAR_DE_EXP" },{ "data": "DESC_ESTATUS_PRU" },{ "data": "FECHAINICIO_INC" },{ "data": "DIASINCAPACIDAD_INC" },{ "data": "FECHAFIN_INC" },//{ "data": "FECHAFIN_INC" },{ // render IMPRIMIR
                                        "data": function (data,Meta) {
                                            return "<button type=\"button\" class=\"btn btn-secondary fa fa-print C_Imprimir\">";
                                        }
                                    },],"columnDefs": [
                                    {
                                        "targets": [3],"visible": false,"searchable": false
                                    },{
                                        "targets": [4],"searchable": false
                                    }
                                ],dom: 'Bfrtip',buttons: [
                                    //'copy','csv','excel',{
                                        extend: 'pdf',orientation: 'landscape',pageSize: 'LEgal'
                                    },{
                                        extend: 'print'//,//messagetop: 'Lista de Empleados RegisTrados' + response.lOrdenesTrabajo[0].NOMBRE_PROV,text: 'Imprimir'
                                    }
                                ],"order": [7,'desc'],//ordernar por fecha de menor a mayor
                                "language": {
                                    "scrollX": true,"sProcessing": "Procesando...","sLengthMenu": "Mostrar _MENU_ registros","sZeroRecords": "No se encontraron resultados","sEmptyTable": "Ningún dato disponible en esta tabla","sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros","sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros","sInfoFiltered": "(filTrado de un total de _MAX_ registros)","sInfoPostFix": "","sSearch": "Buscar:","sUrl": "","sInfoThousands": ",","sLoadingRecords": "Cargando...","oPaginate": {
                                        "sFirst": "Primero","sLast": "Último","sNext": "Siguiente","sPrevIoUs": "Anterior"
                                    },"oAria": {
                                        "sSortAscending": ": Activar para ordenar la columna de manera ascendente","sSortDescending": ": Activar para ordenar la columna de manera descendente"
                                    }
                                }
                            });
                        },50);
                        //AgregaTablaEmpPac(response.lcontenedor);


                    }
                    else {
                        alert(response.responseText);
                    }
                },error: function (xhr) {
                    $('#fader').css('display','none');
                    alert('Ocurrio un Error Inesperado.' + $('#Datos_ID_FechaIn').val());
                }
            })

        };

解决方法

我有一个相同的问题,我使用这种类型的代码来发送所需的记录数:

[DataContract]
public class Course
{
    [DataMember] public string[] UrlsCourse;
    [DataMember] public string BackgroundImage;
    [DataMember] public string KeyWords;
    [DataMember] public string TitleCourse;
    [DataMember] public string[] stats;
    [DataMember] public string description;

    public Course(string[] urlsCourse,string backgroundImage,string keyWords,string titleCourse,string[] stats,string description)
    {
        UrlsCourse = urlsCourse;
        BackgroundImage = backgroundImage;
        KeyWords = keyWords;
        TitleCourse = titleCourse;
        this.stats = stats;
        this.description = description;
    }
}

[DataContract]
public class SearchCourses
{
    [DataMember] public readonly int maxRecords;
    [DataMember] public int maxRecordsPerPage;
    [DataMember] public int currentRecord;
    [DataMember] public int currentPage;
    [DataMember] public int maxPages;
    [DataMember] public int[] minmax;
    [DataMember] public int maxRecordsSent;
    [DataMember] public int currentmaxLinks;
    [DataMember] public Course[] currentDatas;
    [DataMember] public string[] categories;
    public Course[] search;
    public string[] courses;
    public int maxLinks;
    public SearchCourses(string[] courses,int maxRecordsPerPage = 10,int currentPage = 1,int currentRecord = 0,int maxLinks = 9)
    {
        this.currentPage = currentPage;

        this.maxRecordsPerPage = maxRecordsPerPage;
        this.currentRecord = currentRecord;
        this.courses = courses;
        this.maxRecords = courses.Length;
        this.maxLinks = maxLinks;
        this.search = courses.Select(r => getRecord(r.Split(new string[] { "\r\n" },StringSplitOptions.None))).ToArray();
        categories = this.search.Select(c => c.KeyWords.Split('-')[0].Trim()).Distinct().ToArray();
        currentDatas = search.Take(maxRecordsPerPage).ToArray();

        maxRecordsSent = maxRecords;

        maxPages = maxRecordsSent / maxRecordsPerPage + 1;
        this.currentPage = 1;

        maxPages = maxRecordsSent / maxRecordsPerPage + 1;
        currentmaxLinks = maxLinks > maxPages ? maxPages : maxLinks;
        minmax = new int[] { 1,currentmaxLinks };

    } 

    public string GetJSON()
    {
        string json;



        using (var ms = new MemoryStream())
        {
            DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(SearchCourses));
            js.WriteObject(ms,this);
            ms.Position = 0;
            using (var sr = new StreamReader(ms))
            {
                json = sr.ReadToEnd();
            }
        }

        return json;
    }

它的服务器提供了不同的课程列表,因此我将最后的搜索保留在“搜索”中,而只是在currentDatas中发送所需的数据,(我只序列化currentDatas而不使用GetJSON()方法对搜索进行序列化。)>

我有一个带有页数的书签...等等。

我管理显示最大页面数的书签(这里我有9个链接书签),我管理下一页和上一页的按钮..依此类推。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。