2012-04-18 1 views
4

Я думаю, что знаю проблему с этим, но я не знаю, как подойти к ней должным образом, поэтому я надеюсь, что у кого-то здесь была аналогичная проблема, и ей удалось как-то исправить ее. У меня есть таблица с несколькими столбцами, все из которых работают до сортировки, кроме одного. ниже - захват экрана этой колонки и ее сортировка на работе.столбец jquery datatables не правильно сортируется

enter image description here

, как вы можете видеть, что это не сортирует в соответствии с буквенно-цифровой логики. Мое предположение состоит в том, что некоторые из имен имеют в них символы, такие как круглые скобки запятой, скобки и т. Д. Итак, как бы я решил эту проблему, поэтому я могу сортировать это буквенно-цифровое использование плагина datatables? Идея-х?

**** EDIT ****

Это код, я работаю с, работает все, кроме этой одной колонки ..

jQuery.fn.dataTableExt.oSort['num-asc'] = function(a,b) { 
    var x = a.replace(/<.*?>/g, ""); 
    var y = b.replace(/<.*?>/g, ""); 
    x = parseFloat(x); 
    y = parseFloat(y); 
    return ((x < y) ? -1 : ((x > y) ? 1 : 0)); 
}; 

jQuery.fn.dataTableExt.oSort['num-desc'] = function(a,b) { 
    var x = a.replace(/<.*?>/g, ""); 
    var y = b.replace(/<.*?>/g, ""); 
    x = parseFloat(x); 
    y = parseFloat(y); 
    return ((x < y) ? 1 : ((x > y) ? -1 : 0)); 
}; 

$(document).ready(function() { 
    $('#ledger').dataTable({ 
     bAutoWidth: false, 
     bJQueryUI : true, 
     bProcessing: true, 
     bServerSide: false, 
     sPaginationType: "full_numbers", 
     bStateSave : false, 
     bUseRendered: false, 
     iDisplayLength: ${entriesValue}, 
     sDom: mw.superadmin.datatable.relatedListDom, 
     aLengthMenu: mw.superadmin.datatable.relatedListLengthMenu, 
     aaSorting: [[0,'asc']], 
     aoColumns: [ 
      null, 
      { "iDataSort": 2}, 
      { "bVisible": false, "sType": "num"}, 
      { "iDataSort": 4, "bSortable": true }, 
      { "bVisible": false, "sType": "num"} 
     ] 
    }); 

ответ

3

Поскольку вы показываете ссылку, Я предполагаю, что вы используете пользовательскую функцию рендеринга?

Если это так, то в вашем определении столбца установлено следующее:

"bUseRendered": false 

Это сделает таблицу сортировку данных, а не оказанная выход.

+0

это не делают разницы – chris

+0

ли вы использовать его в определении столбца? В вашем примере это находится в определении данных, и это неправильное место. –

+0

не совсем уверен, unfortunatley ive сделал очень мало работы с datatables до этого момента, и это было по существу брошено на меня с силой, чтобы работать с ним, я ставлю свой код выше, если это поможет любому ослабить то, что я сделал неправильно – chris

3

Я считаю, что лучший способ - использовать aoColumnDefs. Попробуйте это:

"aoColumnDefs": [ 
    { 
    "sType": "string" 
    } 
] 


Если это не работает, вам, возможно, потребуется создать пользовательскую функцию сортировки. См. this link.

+0

, к сожалению, это не помогло – chris

+0

Возможно, попробуйте добавить sType строки в первый столбец в aoColumns. Вместо null используйте {"sType": "string"}. Также вы можете посмотреть некоторые документы для [iDataSort] (http://www.datatables.net/ref#iDataSort), поскольку у вас есть скрытые столбцы, которые используются для сортировки. – deusxmach1na

+0

Я не упомянул об этом, кажется, только проблема в браузерах Chrome, FF, IE, Safari и Opera. Это что-то особенное для Chrome – chris

0

Если вы используете пользовательский метод отрисовки, используйте значение «типа» аргумент дифференцировать фактические данные и свой собственный вид .. Как внизу,

"render": function (data, type, full, meta) { 
    if (type === 'display') { 
     return '<a class="btn btn-link">' + full['description'] + '</a>';      
    } 
    return full['description']; 
} 

Внутри данных таблица будет проходить тип, как «отображение» при создании вида и других значений при сортировке, поиске .... и т. д.

0

В моем случае в моем первом столбце содержались изображения, я обнаружил, что сортировка этого столбца правильно сортировала второй столбец, но когда я нажал Сортировка второго столбца, который он сортировал неправильно. я это исправил путем отключения первого столбца через «aTargets» и настройки «Stype» как «нулевой»:

"aoColumnDefs": [ 
     { 'bSortable': true, 'sType':"null", 'aTargets': [1, 6] }, 
    ] 

 Смежные вопросы

  • Нет связанных вопросов^_^