DataTables v1.10 сортировка по скрытому столбцу

После перехода на v1.10 перестала работать сортировка по скрытому столбцу.

Пример Fiddler v1.10 http://jsfiddle.net/0rstgd4f/

var dataTableInfo = $("#dataTable1").DataTable(
    {
        "initComplete": function(settings, json) 
			{
			    settings.aoColumns[0].iDataSort = 1;		
		    }
    });
<table id="dataTable1">
    <thead>
        <tr>
            <th>
                Column1
            </th>
            <th style="display:none;">
                Column2
            </th>
            <th>
                Column3
            </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                1
            </td>
            <td style="display:none;">
                1
            </td>
            <td>
                a
            </td>
        </tr>
        <tr>
            <td>
                2
            </td>
            <td style="display:none;">
                2
            </td>
            <td>
                b
            </td>
        </tr>
        <tr>
            <td>
                3
            </td>
            <td style="display:none;">
                1
            </td>
            <td>
                c
            </td>
        </tr>
    </tbody>
</table>

v.1.8.2 http://jsfiddle.net/rzzrbwb0/

Столбцы должны быть отсортированы как: 1 3 2

or 2 1 3

Я пытался использовать новое определение для initComplete как columns(), column() и т. д., но это не сработало.

Любые идеи и предложения приветствуются.


person Maxim    schedule 29.05.2015    source источник


Ответы (1)


Я не думаю, что initComlete - это правильное место для изменения поведения DataTables, по крайней мере, для 1.10. Из руководства:

DataTables хранит конфигурацию и данные для каждой таблицы в объекте настроек. Структура этого объекта считается закрытой с точки зрения API DataTables, и чтение или запись значений в объекте не поддерживаются. Имена свойств и значения, содержащиеся в объекте, могут, будут меняться между версиями!

Если вы используете DataTables 1.10, его следует определить с помощью columns.orderData или columnDefs.orderData, см. пример ниже:

var dataTableInfo = $("#dataTable1").DataTable({   
   "columnDefs": [
      { "orderData": 1, "targets": [ 0 ] }
   ]        
});

См. эту JSFiddle для демонстрации.

person Gyrocode.com    schedule 30.05.2015
comment
Эта опция не менялась со времен старой версии. К сожалению, в нашей ситуации это не применимо. У нас есть сотни страниц со ссылкой на сценарий по умолчанию. Это последний вариант, который я хочу рассмотреть. - person Maxim; 30.05.2015
comment
@ Максим, я обновил свой ответ. Если вы не можете обновить все страницы или автоматизировать процесс переноса, лучше всего использовать ту версию, которую вы используете. Из вашего вопроса я понял, что вы можете редактировать код, так как вы пробовали более новый API, например initComplete, column() и т. д. - person Gyrocode.com; 30.05.2015
comment
Спасибо. Кажется, нам нужно изменить наш код :( - person Maxim; 30.05.2015