admin管理员组

文章数量:1429336

I'am using asp mvc. when datatable list, send action and response only paging data. if click to print button, I want to all data print.

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 
    "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/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,


});

it's not working below code.

 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'
     },

 ],

When I was click to print button,return only 10 record but I want to all record print.

I'am using asp mvc. when datatable list, send action and response only paging data. if click to print button, I want to all data print.

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/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/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,


});

it's not working below code.

 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'
     },

 ],

When I was click to print button,return only 10 record but I want to all record print.

Share Improve this question edited Jul 12, 2016 at 22:36 Hector Barbossa 5,53813 gold badges50 silver badges70 bronze badges asked Jul 12, 2016 at 21:39 SinanSinan 331 silver badge5 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 3

I am using the datatables serverside too and this is how I managed to print all data without braking anything: providing the "lengthMenu" option to let user select all data:

    $('#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'
                }
            ]
        });

    });

Here, with providing the "lengthMenu" option, the user can select a range or "All" data to view and if the user wants to export all data, then the user will select the "All" selection from the length menu drop down.

I think when server side is enabled, you need to return the number of records. See the documentation, especially the ajax section. Note the records total in the JSON response:

  "recordsTotal": 57,

Here's a good Datatables support thread: https://datatables/forums/discussion/32031/pagination-with-server-side-processing. They discuss server side pagination in detail.

本文标签: javascriptPrint all data from datatableStack Overflow