简体   繁体   English

如何管理大数据的数据表

[英]How to manage datatable for large data

I have a datatable for report. 我有一份报告数据表。 When i tried to show my datas, My browser freezed or crashed. 当我尝试显示数据时,我的浏览器冻结或崩溃。 My js code on below 我的js代码在下面

Reporting_Report.DTReport = $('#Report-ReportTable').DataTable({
    "ajax": {
        "url": "/Ajax/JsonProvider?Method=HardwareHostScreenUsage&GenericObject=true&Json=" + JSON.stringify(json),
        "dataSrc": ""
    },
    "columns": [
        {
            "data": "BranchName",
            "sTitle": "BranchName"
        },
        {
            "data": "HardwareHostFriendlyName",
            "sTitle": "Hardware Host Friendly Name"
        },
        {
            "data": "HardwareHostScreenUsageScreenState",
            "defaultContent": "N/A",
            "sTitle": "Hardware Host Screen Name"
            "render": function(data, type, full) {
                if (data && Util.Check.IsInteger(data)) {
                    if (data == 1) {
                        return "Sorry Screen";
                    } else if (data == 2) {
                        return "Welcome Screen";
                    } else if (data == 3) {
                        return "Progress Screen";
                    }
                }
            }
        },
        {
            "data": "HardwareHostScreenUsageSecondOnScreen",
            "sTitle": "Elapsed Time On Hardware Host Screen"
        },
        {
            "data": "HardwareHostScreenUsageRecordDate",
            "sTitle": "Hardware Host Screen Usage Record Date"
            "render": function (data, type, full) {
                return Util.JsonDateToDate(data).format("dd.mm.yyyy HH:MM:ss");
            }
        }
    ],
    "pageLength": 20,
    "lengthMenu": [
        [20, 50, 100, -1],
        [20, 50, 100, "All"]
    ],
    "info": false,
    bFilter: true,
    bInfo: false,
    "order": [[0, "asc"]],
    "scrollX": true,
    dom: 'Bfrtip',
    buttons: [
        {
            extend: 'copy'
        },
        {
            extend: 'csv'
        },
        {
            extend: 'excel'
        },
        {
            extend: 'pdf',
            title: "Detailed Ticket Report"
            message: startDate + " " + startTime + " - " + endDate + " " + endTime + "\t" + datetime,
            pageSize: 'LEGAL'
        },
        {
            extend: 'print'
        }
    ]
});

I have more than 100.000 datas. 我有超过100.000个数据。

I thinked maybe i can just get showing page datas and total data number(for manage page numbers) and when clicked another page number send new query and get new datas. 我以为也许我可以显示页面数据和总数据号(用于管理页面号),然后单击另一个页面号即可发送新查询并获取新数据。 But i couldn't find how to do that to.(maybe it cause some another problems (shorting, searching vs.) 但是我找不到解决方法(可能会引起其他问题(短路,搜索或其他))。

Have you got any ideas and solutions.(or this problem has already a solution) 您有任何想法和解决方案吗(或者这个问题已经解决了)

footnote:json has some filters for query(time, branch, etc.) 脚注:json有一些用于查询的过滤器(时间,分支等)

HardwareHostScreenUsage method gets my datas on c# side. HardwareHostScreenUsage方法在c#端获取我的数据。

you can use client side data source also- 您还可以使用客户端数据源-

var mydata = [];
$('#example').DataTable({
    data:           data,
    deferRender:    true,
    scrollY:        200,
    scrollCollapse: true,
    scroller:       true
});

fetch all data at once from server and show it while scrolling the table . 一次从服务器获取所有数据,并在滚动表时显示它们。

You Need these library - 您需要这些库-

https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js https://cdn.datatables.net/scroller/1.4.3/js/dataTables.scroller.min.js https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js https://cdn.datatables.net/scroller/1.4.3/js/dataTables.scroller.min.js

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM