Как я могу сделать мой datatable экспорт исходных данных, а не сгенерированных данных? - PullRequest
0 голосов
/ 24 марта 2020

Хорошо, у меня есть таблица данных, в которой я пытаюсь добавить возможность экспорта в CSV. Я не могу заставить его экспортировать фактическое значение столбцов isAuthenticated / isDisabled. Экспорт идет с пустыми значениями для этих столбцов, вероятно, потому что я отображаю изображение в этих столбцах, используя columndefs, а не отображаю исходные данные.

Я генерирую значения столбца неправильно или какое направление должно Я go чтобы экспортировать фактическое значение true / false для этих столбцов?

<script type="text/javascript">
    $(document).ready(function () {
        var dTable = $('#UserList').DataTable({
            "processing": true, // for show progress bar
            "serverSide": false, // for process server side
            "filter": true, // this is for disable filter (search box)
            "orderMulti": false, // for disable multiple column at once
            "pageLength": 10,
            "dom": '<"html5buttons"B>lTfgitp</div>',
            "buttons": [
                { extend: 'excel', title: 'Tool Users' }
                ],
            "ajax": {
                "url": "/Supervisor/UserData",
                "type": "POST",
                "datatype": "json"
            },
            "columns": [
                { "data": "id", "name": "id", "width": "18%" },
                { "data": "fullName", "name": "fullName", "autoWidth": true },
                { "data": "email", "name": "Email", "autoWidth": true },
                { "data": "isAuthenticated", "name": "isAuthenticated", "width":"8%" },
                { "data": "isDisabled", "name": "isDisabled", "width": "8%" },
                {
                    "render": function (data, type, full, meta)
                    { return '<a class="btn btn-info ManageUsersBtn" href="/Supervisor/EditUser/' + full.id + '">Edit</a> '; }
                }
            ],
            "columnDefs": [
                {
                    "render": function (data, type, row) {
                        return (data === true) ? '<span class="glyphicon glyphicon-ok text-navy"></span>' : '<span class=" glyphicon glyphicon-remove text-danger"></span>';
                    },
                    "targets": 3
                },
                {
                    "render": function (data, type, row) {
                        return (data === true) ? '<span class="glyphicon glyphicon-remove text-danger"></span>' : '<span class=" glyphicon glyphicon-ok text-navy"></span>';
                    },
                    "targets": 4
                }
            ],
            "fnCreatedRow": function (nRow, aData, iDataIndex) {
                if (aData.isAuthenticated) {

                }
                else {
                    $('td:eq(5)', nRow).append('<a class="btn btn-info ManageUsersBtn" onclick=AuthenticateUser("' + aData.id + '","' + aData.firstName + '","' + aData.lastName + '")>Authorize</a> ' ) ;
                }

                if (aData.isDisabled) {
                    $('td:eq(5)', nRow).append('<a class="btn btn-info ManageUsersBtn" onclick=EnableUser("' + aData.id + '","' + aData.firstName + '","' + aData.lastName + '")>Enable</a> ') ;

                }
                else {
                    $('td:eq(5)', nRow).append('<a class="btn btn-danger ManageUsersBtn" onclick=DisableUser("' + aData.id + '","' + aData.firstName + '","' + aData.lastName + '")>Disable</a> ') ;
                }
            },
        });
    });

1 Ответ

0 голосов
/ 24 марта 2020

Я на самом деле все понял. Мне пришлось указать разные данные в зависимости от типа возвращаемого значения, а затем установить ортогональные параметры экспорта. Это немного грязно, но это работает.

<script type="text/javascript">
    $(document).ready(function () {
        var dTable = $('#UserList').DataTable({
            "processing": true, // for show progress bar
            "serverSide": false, // for process server side
            "filter": true, // this is for disable filter (search box)
            "orderMulti": false, // for disable multiple column at once
            "pageLength": 10,
            "dom": '<"html5buttons"B>lTfgitp</div>',
            "buttons": [
                { extend: 'excel', title: 'Tool Users', exportOptions: { orthogonal: 'export', columns: [0,1,2,3,4] } }
                ],
            "ajax": {
                "url": "/Supervisor/UserData",
                "type": "POST",
                "datatype": "json"
            },
            "columns": [
                { "data": "id", "name": "id", "width": "18%" },
                { "data": "fullName", "name": "fullName", "autoWidth": true },
                { "data": "email", "name": "Email", "autoWidth": true },
                { "data": "isAuthenticated", "name": "isAuthenticated", "width":"8%" },
                { "data": "isDisabled", "name": "isDisabled", "width": "8%" },
                {
                    "render": function (data, type, full, meta)
                    { return '<a class="btn btn-info ManageUsersBtn" href="/Supervisor/EditUser/' + full.id + '">Edit</a> '; }
                }
            ],
            "columnDefs": [
                {
                    "render": function (data, type, row) {
                        return type === 'export' ?
                            data == true ? "True" : "False" :
                            data === true ? '<span class="glyphicon glyphicon-ok text-navy"></span>' : '<span class=" glyphicon glyphicon-remove text-danger"></span>';

                    },
                    "targets": 3
                },
                {
                    "render": function (data, type, row) {
                        return type === 'export' ? 
                            data == true ? "True" : "False" : 
                            data == true ? '<span class="glyphicon glyphicon-remove text-danger"></span>' : '<span class=" glyphicon glyphicon-ok text-navy"></span>';
                    },
                    "targets": 4
                }
            ],
            "fnCreatedRow": function (nRow, aData, iDataIndex) {
                if (aData.isAuthenticated) {

                }
                else {
                    $('td:eq(5)', nRow).append('<a class="btn btn-info ManageUsersBtn" onclick=AuthenticateUser("' + aData.id + '","' + aData.firstName + '","' + aData.lastName + '")>Authorize</a> ' ) ;
                }

                if (aData.isDisabled) {
                    $('td:eq(5)', nRow).append('<a class="btn btn-info ManageUsersBtn" onclick=EnableUser("' + aData.id + '","' + aData.firstName + '","' + aData.lastName + '")>Enable</a> ') ;

                }
                else {
                    $('td:eq(5)', nRow).append('<a class="btn btn-danger ManageUsersBtn" onclick=DisableUser("' + aData.id + '","' + aData.firstName + '","' + aData.lastName + '")>Disable</a> ') ;
                }
            },
        });
    });
...