JQuery DataTables - добавить кнопки редактора после инициализации - PullRequest
1 голос
/ 08 ноября 2019

У меня есть следующее, которое добавляет кнопки редактора DataTables при инициализации.

$( '#year_table' ).DataTable( {
                responsive: true,
                ajax: "program_data/year_data.php",
                dom: "Bfrtip",
                columns: [ {
                    data: "year_name"
                }, {
                    data: "modified"
                }, {
                    data: "modified_by"
                } ],
                select: {
                    style: 'os',
                    selector: 'td:first-child'
                },
                buttons: [ {
                    extend: "create",
                    editor: editor
                }, {
                    extend: "edit",
                    editor: editor
                }, {
                    extend: "remove",
                    editor: editor
                } ]
            } );

Однако я хочу добавить кнопки после инициализации в соответствии с разрешениями пользователя.

        if ( permision == 'create' || permision == 'super' ) {
            $( '#year_table' ).DataTable().buttons().add( {
                extend: 'create',
                editor: editor
            } );
        }

        if ( permision == 'edit' || permision == 'super' ) {
            $( '#year_table' ).DataTable().buttons().add( {
                extend: 'edit',
                editor: editor
            } );
        }

        if ( permision == 'super' ) {
            $( '#year_table' ).DataTable().buttons().add( {
                extend: 'delete',
                editor: editor
            } );
        }

Как изменить инициализацию DataTables, чтобы это работало?

Я пробовал следующий простой тест, но не добавил кнопку:

    var table = $( '#year_table' ).DataTable( {
        responsive: true,
        ajax: "program_data/year_data.php",
        dom: "Bfrtip",
        columns: [ {
            data: "year_name"
        }, {
            data: "modified"
        }, {
            data: "modified_by"
        } ],
    } );

                    table.buttons().add( {
            extend: 'create',
            editor: editor
        } );

1 Ответ

1 голос
/ 11 ноября 2019

Это работает, если другие хотят сделать то же самое.

var permission = $( '#permission_field' ).val();  

var table = $( '#my_table' ).DataTable( {
                responsive: true,
                ajax: "program_data/my_data.php",
                dom: "Bfrtip",
                columns: [ {
                    data: "name"
                }, {
                    data: "modified"
                }, {
                    data: "modified_by"
                } ],
                select: {
                    style: 'os',
                    selector: 'td:first-child'
                },
                buttons: []
            } );


if ( permission == 'edit' || permission == 'super' ) {
                table.button().add( null, {
                    extend: 'edit',
                    editor: editor
                } );
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...