2017-01-17 1 views
1

Я использую DataTable и хочу сортировки/упорядочение некоторого столбца (в моем случае это первый столбец), как это:Datatable регистронезависимой сортировка

A 
a 
B 
b 
C 
c 

вместо

A 
B 
C 
a 
b 
c 

У меня есть следующий код:

/* Define two custom functions (asc and desc) for string sorting */ 
jQuery.fn.dataTableExt.oSort['string-case-asc'] = function(x,y) { 
return ((x < y) ? -1 : ((x > y) ? 1 : 0)); 
}; 

jQuery.fn.dataTableExt.oSort['string-case-desc'] = function(x,y) { 
return ((x < y) ? 1 : ((x > y) ? -1 : 0)); 
}; 

и в DataTable сценарии у меня есть:

$(function() { 
    $('#tpl-table').DataTable({ 

"aoColumns": [ 
     { "sType": 'string-case' }, 
     null, 
     null, 
     null, 
     null 
    ], 
}); 

Когда запускается код, имеющий следующее сообщение об ошибке, как в ниже рис

enter image description here

У меня есть 5 столбцов в DataTable и хотите сортировать первый столбец. Любой человек может помочь ..

+0

Действительно ли выполняется заказ 'A' перед' a'? –

+0

Нет, это не имеет значения ... A приходит после –

ответ

0

Это похоже на работу:

var data = [{ 
    "letter": "A" 
}, { 
    "letter": "a" 
}, { 
    "letter": "B" 
}, { 
    "letter": "b" 
}, { 
    "letter": "C" 
}, { 
    "letter": "c" 
}]; 

jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
    "lower-letter-pre": function(a) { 
     return a.toLowerCase().charCodeAt(0); 
    }, 
    "lower-date-asc": function(a, b) { 
     return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
    }, 
    "lower-date-desc": function(a, b) { 
     return ((a < b) ? 1 : ((a > b) ? -1 : 0)); 
    } 
}); 


$(function() { 
    var example = $("#example").DataTable({ 
     data: data, 
     columns: [ 
      { 
       "title": "Letter", 
       "type": "lower-letter", 
       "data": "letter" 
      } 
     ] 
    }); 
}); 

Рабочая JSFiddle here. Я думаю, вы могли бы взять ссылку на оригинальный символ, и если это нижний регистр, добавьте 0.5, чтобы обеспечить согласованный порядок для символов верхнего регистра и нижнего регистра ...? Надеюсь, это поможет.

+0

OK .. Я попробую и сообщит вам –

+0

Код работает нормально ... данные идут с лицевой стороны здесь .. В моем случае это происходит с сервера ... В любом случае ... это помогает –