Создание объекта javascript из строки для использования с таблицами данных - PullRequest
0 голосов
/ 17 марта 2011

Этот вопрос касается плагина, найденного здесь: http://www.datatables.net/usage/columns

var hidecols = '{"sClass": "Hide", "aTargets": [0]},{"sClass": "asdf", "aTargets": [1]},{"sClass": "qwer", "aTargets": [2]}';

var hidecolsobj = eval('(' + hidecols + ')');


        var oTable = $('#MainContent_OverviewTable').dataTable({
            "sPaginationType": "full_numbers",
            "bProcessing": true,
            "bServerSide": true,
            "aoColumnDefs":
            [
                hidecolsobj, // <--------- *** HERE ***
            ],
            "sAjaxSource": "Services/Service.svc/GetDataTableOutputOverview",
            "fnServerData": function (sSource, aoData, fnCallback) {
                var jsonAOData = JSON.stringify(aoData);
                $.ajax({
                    type: "POST",
                    async: true,
                    url: sSource,
                    contentType: "application/json; charset=utf-8",
                    data: '{"Input":' + jsonAOData + '}',
                    dataType: "json",
                    success: function (msg) {
                        fnCallback(msg);
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.responseText);
                    }
                });
            }
        });

Таким образом, код работает без ошибок, но класс "qwer" - единственный, который применяется к моей таблице. Я проверил это, и он применяет только тот класс, который указан последним в моем списке объектов. Мне бы хотелось, чтобы в каждом из столбцов были определены классы в переменной hidecols. Как я могу это сделать?

Вот как это выглядит в документации с сайта Datatables:

$('#example').dataTable( {
    "aoColumnDefs": [ 
        { "sClass": "my_class", "aTargets": [ 0 ] }
    ]
} );

РЕДАКТИРОВАТЬ:

            "aoColumnDefs":
            [
                { "sClass": "Hide", "aTargets": [0] },
                { "sClass": "asdf", "aTargets": [1] }, 
                { "sClass": "qwer", "aTargets": [2] }
            ],

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

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Вы передаете DataTables строку для параметра aoColumnDefs.Просто удалите кавычки вокруг «строки» hidecols, чтобы сделать его массивом объектов.Это устранит потребность во зле (эвал).

0 голосов
/ 17 марта 2011

Ах!Я понял, как это сделать!

Вместо этого:

        "aoColumnDefs":
        [
            hidecolsobj, // <--------- *** HERE ***
        ],

Я должен сделать это:

    var hidecols = '[{"sClass": "Hide", "aTargets": [0]},{"sClass": "asdf", "aTargets": [1]},{"sClass": "qwer", "aTargets": [2]}]';
var hidecolsobj = eval('(' + hidecols + ')');
            "aoColumnDefs": hidecolsobj, // <--------- *** HERE ***
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...