1

ユーザーを有効または無効にするために、データテーブルとブートストラップ スイッチ プラグインを使用しています。スイッチをクリックすると、ajax を介して Web サービスが呼び出され、残りの Web サービスはユーザーのステータスをデータベースに切り替えます。問題は、どのユーザーがデータテーブル行から選択されているかを知り、それを私の Web サービスに渡すことです。これはテーブルの初期化です:

if ( ! $.fn.DataTable.isDataTable( '#usersTable' ) ) {
        userTable = $('#usersTable').DataTable({
            responsive: true,
            //disable order and search on column
            columnDefs: [
                         {
                             targets: 1,
                             orderable: false,
                             searchable: false,
                         }
                         ],
            //fix problem with responsive table
            "autoWidth": false,
            "ajax": "table",
            "columns": [
                        { "data": "username" },
                        { data: "enabled", render: function ( data, type, row ) {
                            if (data) {
                                return '<input data=data=row.username type="checkbox" name="my-checkbox" checked>';
                            }
                            else {
                                return '<input data=data=row.username type="checkbox" name="my-checkbox">';
                            }
                        }   
                        },
                        { "data": "role.role"},
                        { "data": "clientVersion.name" },
                        {
                            data: null,
                            className: "center",
                            defaultContent: '<button type="button" class="btn btn-danger" id="deleteLicense" data-toggle="modal" th:attr="data-href=${license.idClientLicense}" data-target="#deleteLicenseModal">Delete</button>'
                        }
                        ],
                        "fnDrawCallback": function() {
                        //Initialize checkbos for enable/disable user
                        $("[name='my-checkbox']").bootstrapSwitch({size: "small", onColor:"success", offColor:"danger"});
                        //$('#toggleChecked').bootstrapSwitch({size: "small", onColor:"success", offColor:"danger"});
                        }
        });
    }
    else {
        userTable.ajax.url("table").load();
    }

そして、これはブートストラップ スイッチ イベントです:

$('#usersTable').on('switchChange.bootstrapSwitch', 'input[name="my-checkbox"]', function(event, state) {
        //CSRF attribute for spring security
        var token = $("meta[name='_csrf']").attr("content");
        var header = $("meta[name='_csrf_header']").attr("content");
        $.ajax({
            type : "POST",
            url : "status/" + //username setted above,
            beforeSend:function(xhr) {
                xhr.setRequestHeader(header, token);
            },  
//          all right with rest call
            success : function(data) {  
//              No exception occurred
                if (data.status==true){ 
//                  Also the field are right(for e.g. form value)
                    if(data.success==true){


                    }
                    else{
//                      code if there are some error into form for example
                    }
                } else {
//                  code exception
                    notifyMessage(data.result, 'error');
                }
            },
//          error during rest call
            error : function(data) {
                window.location.href = "/ATS/500";
            }
        });
    });

構築中にブートストラップスイッチのフィールドとしてユーザー名を設定することを考えましたが、どうすればよいですか? 私はこのようなことをする必要があります:

if (data) {
    return '<input value=username type="checkbox" name="my-checkbox" checked>';

しかし、ajax呼び出しから返された値ではなくユーザー名を設定しているため、機能しません。手伝って頂けますか?

4

1 に答える 1

2

私はこのコードで解決しました(誰かに役立つことを願っています)

{ data: "enabled", render: function ( data, type, row ) {
    if (data) {
        return '<input data="'+row.username+'" type="checkbox" name="my-checkbox" checked>';
    }else {
        return '<input data="'+row.username+'" type="checkbox" name="my-checkbox">';
    }
}   

そして、私は値を取得します$(this).attr('data')

于 2016-02-08T09:44:57.470 に答える