2014-09-24 6 views
2

У меня есть проблема с сортировкой сортировщика таблиц в данный момент. Проблема в том, что я сортирую свое время, но когда столбец содержит n/a, я бы хотел, чтобы он появился в конце сортировки. Может ли кто-нибудь помочь мне достичь этого, пожалуйста?jquery tablesorter как игнорировать строку из сортировки

enter image description here

Вот мой код банка ...

$("#myStoreStatus").tablesorter({ 
    sortList: [[2,1],[8,0],[0,0]], 
    stripingRowClass: ['even','odd'], 
    stripeRowsOnStartUp: true, 
    widthFixed: false, 
    widgets: ['zebra'], 
    dateFormat: "uk", 
    headers: { 
     0: { sorter: 'digit' } // column number, type 
    } 
}); 
+0

проверьте документацию, возможно, есть тег html, подобный этому 'data-order =" 10 "', поэтому ваш код html будет выглядеть так: ' Ten'. В этом случае система будет обрабатывать 'data-order' для сортировки, а для N/A вы можете ввести значение 23:59, поэтому появится внизу. –

+0

@ Davor это не сработает, если порядок сортировки будет изменен. –

+0

ну, http://datatables.net/ есть этот вариант, поэтому я предложил посмотреть. Возможно, также у tablesorter есть и этот вариант. –

ответ

1

Насколько я мог понять проблему в том, что вы хотите, п/а строки появляются всегда в конце концов, даже если порядок сортировки для столбца времени изменяется.

Вот один из возможных вариантов.

$("#myStoreStatus").tablesorter({ 
    sortList: [[2,1],[8,0],[0,0]], 
    stripingRowClass: ['even','odd'], 
    stripeRowsOnStartUp: true, 
    widthFixed: false, 
    widgets: ['zebra'], 
    dateFormat: "uk", 
    headers: { 
     0: { sorter: 'digit' } // column number, type 
    }, 

    textExtraction: function (node) { 
     if (($(node).index()==8) && ($(node).text().toLowerCase()=='n/a')) 
      $(node).parent().addClass('jsnamark'); 
     return $(node).text(); 
    } 

}).bind('sortEnd' function() { 
    $(this).append($(this).find('.jsnamark')); 
}); 

Теперь, что этот мир делает, довольно просто. Он использует функцию textExtraction, чтобы проверить, имеет ли восьмая (временная) ячейка значение «n/a». Если это так, то добавляет класс jsnamark в свою строку. (вы также можете сделать то же самое несколькими способами с помощью jQuery или с сервера, если вы показываете страницу с помощью серверного скрипта).

Когда сортировка завершена, он повторно отображает строки, в которых класс jsnamark находится в конце таблицы.

+1

+1 Хорошая работа. Единственная проблема, которую я вижу, может произойти, если данные таблицы будут изменены, а «n/a» будет заменено на число. Кроме того, эта проверка должна убедиться, что она находится в нижнем регистре '$ (node) .text(). ToLowerCase() == 'n/a'' – Mottie

+0

@Mottie оба очень верно –

+0

Проверьте это для изменения значений ячеек. Я предполагаю, что если вы используете это, чтобы вызвать updateCell, он переделает textExtraction. Однако я бы добавил «else $ (node) .parent(). RemoveClass ('jsnamark')" ссылка: http://mottie.github.io/tablesorter/docs/example-update-cell.html –

1

Возможно, вы захотите также ознакомиться с моим fork of tablesorter.

Существует встроенная опция, в которой вы можете установить, как строковые значения (например, «N/A») сортируются в числовых столбцах - см. this demo.

Если вы используете оригинальный tablesorter, вы можете использовать опцию textExtraction для замены N/A пустой строкой; или используйте код @ Jadran, который также будет работать.

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