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

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

Неправильно ли я генерирую значения столбцов или в каком направлении мне следует экспортировать фактическое значение 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 ответ


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

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

Есть идеи?

10000