Состояние Datatables JQuery-Plugin из базы данных - PullRequest
0 голосов
/ 20 октября 2011

Мне нужно загрузить состояние из базы данных. Я не знаю, как я могу изменить состояние (ColReorder, ColVis и т. Д.). При первой загрузке установите настройки из моей базы данных в fnStateLoadCallback. Затем я использую только по нажатию кнопки «Да» oTableDrucken.fnReloadAjax(); и установлю мои новые настройки из базы данных, но он не прошел функцию fnStateLoadCallback.

oTableDrucken = $('#table_drucken').dataTable({
        "bServerSide": false,
        "bProcessing": true,
        "bLengthChange": false, 
        "bAutoWidth" : false,
                "oColVis": {
                    "buttonText": "Zeige/Verstecke Spalten"
                },
        "sDom": 'r<"F"<"toolbar"RfC>>t<"F"i>',
        "sAjaxSource": "includes/sites/json_data.php",
                "fnServerData": function( sSource, aoData, fnCallback  ) {
                $.ajax({
                    "dataType": 'json', 
                    "type": "POST", 
                    "url": sSource, 
                    "data": aoData, 
                    "success": fnCallback
                });
        },
        "fnInitComplete": function (sdata,responseData) {
                    init_TableTools(oTableDrucken,responseData["logo"]);
        },
        "aoColumns": [          
            /* 1 ID */   { "sClass": "name", "mDataProp": "id" , "sName": "id"  },
            /* 2 Name */   { "sClass": "name", "mDataProp": "name" , "sName": "name"  },    
        ],
                "bStateSave": true,
                "fnStateSaveCallback": function ( oSettings, sValue ) {
            //Gives me the ColReorder Settings
            var valueObj = $(oTableDrucken).dataTable().dataTableSettings[0].aoStateSave[1].fn(null,sValue)+"}";
                    dataTableSettings = $.parseJSON(valueObj);
            return sValue;
                },
                "fnCookieCallback": function(sName, oData, sExpires, sPath) {
                    console.log("cookieCallback");   
                    return sName + "="+JSON.stringify(oData)+"; expires=" + sExpires +"; path=" + sPath;
                },
                "fnStateLoadCallback": function ( oSettings, oData ) {
                    oData.ColReorder = dataTableSettings.ColReorder;
                oData.abVisCols = dataTableSettings.abVisCols;
            return true;
            },
        "bJQueryUI": true,
        "bPaginate": false,
        "bLengthChange": false,
        "bFilter": true,
        "bSort": true,
        "bInfo": true,
        "oLanguage": oCustomLanguage("drucken")
}); 

1 Ответ

0 голосов
/ 08 июня 2012

Чтобы сохранить и загрузить параметры данных в базу данных, используйте функции fnStateSave и fnStateLoad (не забудьте установить bStateSave в true и установить async в false при загрузке)

Я использую jQuery для анализа JSON,потому что, если настройки не сохранены в базе данных, JSON.parse приводит к ошибке.

<script>
var oTable = $('.phonebook').dataTable( {
    "bStateSave": true,
    "fnStateLoad": function (oSettings, oData) {
        var o;

        $.ajax({
            type: "POST",
            url: "/ajax/loadState",
            async: false,
        }).done(function(data) {
            o = $.parseJSON(data);
        });

        return o;
    },
    "fnStateSave": function (oSettings, oData) {
        $.ajax({
            type: "POST",
            url: "/ajax/saveState",
            data: "data=" + JSON.stringify(oData),
        });
    },
});
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...