【问题标题】:Print all data from datatable打印数据表中的所有数据
【发布时间】:2016-11-15 07:28:14
【问题描述】:

我正在使用 asp.net mvc。当数据表列表时,仅发送动作和响应分页数据。如果点击打印按钮,我想打印所有数据。

var table = $('#dataTableNoticeReport');
var oTable = table.dataTable({
    "bScrollCollapse": true,
    "bDestroy": true,
    "paging": true,
    "ordering": false,
    "info": true,
    "bFilter": true,
    "bProcessing": true,
    "bLengthChange": true,
    "bServerSide": true,
    "sAjaxSource": "/Manage/Notice/_NoticeDatatable?readStatus=" + $(this).val() + "&noticeId=" + $("#NoticeSearch_Id").val(),
    "sServerMethod": "POST",
    "aoColumns": [{
        "mDataProp": "Name"
    }, {
        "mDataProp": "SurName"
    }, {
        "mDataProp": "PhoneNumber"
    }, ],
    // Internationalisation. For more info refer to http://datatables.net/manual/i18n
    "language": {
        "aria": {
            "sortAscending": ": activate to sort column ascending",
            "sortDescending": ": activate to sort column descending"
        },
        "emptyTable": "Tabloda Gösterilecek Kayıt Bulunamadı",
        "info": "Gösterilen : _START_ - _END_  /  _TOTAL_ ",
        "infoEmpty": "Kayıt Bulunamadı.",
        "infoFiltered": "(Toplam _MAX_ kayıttan sorgulama yapıldı.)",
        "lengthMenu": "_MENU_  Kayıt Sayısı",
        "search": "Ara:",
        "zeroRecords": "Kayıt Bulunamadı."
    },

    // Or you can use remote translation file
    //"language": {
    //   url: '//cdn.datatables.net/plug-ins/3cfcc339e89/i18n/Portuguese.json'
    //},
    dom: 'Bfrtip',
    buttons: [{
            extend: 'print',
            "sButtonText": 'Export',
            className: 'btn default',
            oSelectorOpts: {
                page: 'all'
            },
            bShowAll: true,
            sAjaxSource: "/Manage/Notice/_NoticeDatatable?readStatus=" + $(this).val() + "&noticeId=" + $("#NoticeSearch_Id").val()


        }, {
            extend: 'copy',
            className: 'btn default'
        }, {
            extend: 'pdf',
            className: 'btn default'
        }, {
            extend: 'excel',
            className: 'btn default'
        }, {
            extend: 'csv',
            className: 'btn default'
        },

    ],

    "order": [
        [0, 'asc']
    ],

    "lengthMenu": [
        [5, 10, 15, 20, 5000],
        [5, 10, 15, 20, "All"] // change per page values here
    ],
    // set the initial value
    "pageLength": 10,


});

它在代码下面不起作用。

 buttons: [{
         extend: 'print',
         "sButtonText": 'Export',
         className: 'btn default',
         oSelectorOpts: {
             page: 'all'
         },
         bShowAll: true,
         sAjaxSource: "/Manage/Notice/_NoticeDatatable?readStatus=" + $(this).val() + "&noticeId=" + $("#NoticeSearch_Id").val()


     }, {
         extend: 'copy',
         className: 'btn default'
     }, {
         extend: 'pdf',
         className: 'btn default'
     }, {
         extend: 'excel',
         className: 'btn default'
     }, {
         extend: 'csv',
         className: 'btn default'
     },

 ],

当我点击打印按钮时,只返回10条记录,但我想全部记录打印。

【问题讨论】:

    标签: javascript jquery asp.net-mvc


    【解决方案1】:

    我也在使用数据表服务器端,这就是我设法打印所有数据而不制动任何东西的方法:提供“lengthMenu”选项让用户选择所有数据:

        $('#table').DataTable({
                "ajax": {
                    url: "my_url",
                    type: 'POST'
                },
                "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
                "processing": true,
                "serverSide": true,
                "bPaginate": true,
                "sPaginationType": "full_numbers",
                "columns": [
                    { "data": "a" },
                    { "data": "b" },
                    { "data": "c" },
                    { "data": "d" },
                    { "data": "e" }
                ],
                "dom": 'Blfrtip',
                "buttons": [
                    { 
                        extend: 'print'
                    }
                ]
            });
    
        });
    

    在这里,通过提供“lengthMenu”选项,用户可以选择要查看的范围或“全部”数据,如果用户想要导出所有数据,则用户将从长度菜单中选择“全部”选项下拉。

    【讨论】:

    • 不从下拉列表中全选直接按ctrl+p n显示所有数据表格数据表可以吗?
    • 是的,有可能。要提供它,您可以准备一个“第二个”数据表,它将所有数据加载到隐藏可见性的页面,并在您点击 ctrl+p 时提供正确的 CSS 规则(@media print),您可以从中打印整个数据桌子。这种方法的坏处是当您拥有非常大的数据集时;这将一直在页面上,并且可能会锁定 UI。 “最好的方法”是在服务器端准备一个带有块的 pdf 文件。查看 Apache PDFBox:pdfbox.apache.org
    • 不创建“第二个”数据表是不可能的??
    • 好吧,如果可能的话我不知道。
    【解决方案2】:

    认为启用服务器端时,需要返回记录数。请参阅documentation,尤其是 ajax 部分。注意 JSON 响应中的记录总数:

      "recordsTotal": 57,
    

    这是一个很好的数据表支持线程:https://datatables.net/forums/discussion/32031/pagination-with-server-side-processing。他们详细讨论了服务器端分页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      • 1970-01-01
      • 2016-10-08
      相关资源
      最近更新 更多