2014-12-18 3 views
2

Я отключу возможность заказа пользователю после того, как данные будут рисоваться. У меня есть данные, и я бы заказывал данные и удалял возможность для пользователя вручную заказывать данные. Как я могу это сделать?Отключить порядковые столбцы после инициализации (завершение инициализации) в datatables

Я использовал ниже код:

table = $('#tbl-1').DataTable({ 
      "info": false, 
      "searching": true, 
      "paging": false, 
      "iDisplayLength": 25, 
      "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "Tutti"]], 
      "language": {"url": "include/it_IT.txt"}, 
      "order": [[1,"desc"]],    
      //"ordering": false, 
      //"orderFixed": {"pre": [ 1, "desc" ]},        
      "fnInitComplete": function(oSettings, json) { 
        //alert('DataTables has finished its initialisation.'); 
        this.fnFilter("<?php echo $_POST['search'];?>");       
        }, 
      }).on('init.dt', function (e, settings, data) { 
       wrappa(); //after custom function 
      }); 
+0

[http://www.datatables.net/forums/discussion/7377/disable-all-sorting-after-init](http://www.datatables.net/forums/discussion/7377/disable-all -sorting-after-init) – markpsmith

+0

Я просто вижу это, но не работаю на моем сайте – Valix85

ответ

0

Я думаю, что гораздо простым решением является просто отвязать событие щелчка на <th>-х, после того, как DataTable инициализируется. При этом вы по-прежнему будете сортировать таблицу по вашему желанию, и сохраните маленькую стрелку слева, указывая, как сортируется dataTable.

$(document).ready(function() { 
    $(".sorting, .sorting_asc, .sorting_desc").unbind('click'); 
}); 

см демонстрационная ->http://jsfiddle.net/197ek1k4/

NB: Причина предложение markpsmith в выше не работает для вас, является то, что она ориентирована на OLDSCHOOL dataTable() инициализации и ожидает объект JQuery для работы, в то время как вы используете подход 1.10.x DataTable(), который дает объект API для работы.

+0

Хорошо, это трюк, обходной путь, невозможно улучшить, что с помощью api или определенного метода? – Valix85

+0

Нет. Вы можете установить 'bSort: false', но это также отключит ваш собственный заказ. То же самое с установкой '' orderable ': false' для всех столбцов. Вы можете отключить упорядочение для всех столбцов, но столбец, который вы отсортировали вручную, но затем пользователь может изменить восходящий/нисходящий порядок, например this -> http://jsfiddle.net/qtqrotjq/. Поэтому удаление кликов - это, вероятно, лучшее общее решение. – davidkonrad

1

Инициализировать ваш DataTable с

$('#example').dataTable({ 
    "ordering": false 
}); 

и отключит все приказывая ссылка: https://datatables.net/reference/option/ordering

+1

это неверно, потому что мне нужно сделать заказ в первый раз, и только после заказа я должен отключить .. – Valix85

+1

, если вы установите 'ordering: false' в столбце OP, который хочет, чтобы пользователь мог сортировать, он будет освободить его собственный заказ, например, «порядок»: [[1, «desc»]] ». – davidkonrad

1

старый пост, но до сих пор не обрабатываются дт апи. Удаление событий не будет работать, если вы хотите временно отключить сортировку. Вместо этого используйте jquery для добавления и последующего удаления класса на каждый th, и в этом классе укажите «pointer-events: none».