2015-10-16 3 views
2

дружественные кодеры :-) Мне нужно в довольно базовой функциональности плагина jQuery tablesorter. Прежде всего, мне не нужно в таблице перед сортировкой. Я отображаю таблицу в строгом порядке в порядке, когда данные находятся в файле. Итак, теперь мой код очень прост и заключается в следующем:Tablesorter (mottie fork) condiionally multi-column sort

<script> 
$(document).ready(function() 
{ 
    $("#results").tablesorter({ 
     cancelSelection: true, 
     headers: 
      { 0 : { sorter: "text" }, 
       1 : { sorter: "digit" }, 
       2 : { sorter: "text" }, 
       3 : { sorter: "digit" }, 
       3 : { sortInitialOrder: "desc" }, 
       4 : { sorter: "digit" }, 
       4 : { sortInitialOrder: "desc" } 
      } 
           }); 
    } 
); 
    $('#results').on('sortBegin', function() { 
     var c = this.config, 
     col = c.sortList[0][0]; 
      if (col === 0) { 
// column 0 sorting, add column 2 
       c.sortList.push([2,0]); 
    } else if (col === 2) { 
// column 2 sorting, add column 4 
     c.sortList.push([4,1]); 
    } 
}).tablesorter({ 
    widgets: ['columns'] 
}); 
</script> 

Что мне нужно: 1. сортировать по колонке 0 (по возрастанию, по умолчанию), то столбец 2 (по возрастанию, по умолчанию) 2 Сортировка по столбцу 2 (по возрастанию, по умолчанию), затем столбец 4 (по возрастанию, не по умолчанию)

Я не хочу использовать sortAppend, потому что я не хочу, чтобы ВСЕГДА делали дополнительную сортировку. Мне нужно в нем ТОЛЬКО для столбцов 0 и 2. Я не хочу использовать виджеты с параметрами «вторичный» и «термический» из-за того, что я не хочу делать «вторичную» сортировку. Действительно мне нужно в чем-то вроде условного sortappend, как

sortAppend [0]: [2,0] 
sortAppend [2]: [4,1] 

Как я могу это сделать?

Обновление: Я изменил основной вопрос, включив предлагаемые решения. Он проверен и работает по мере необходимости, большое спасибо Мотти и его вилке столовера!

ответ

1

Это не красиво, но вы можете связать с sortBegin события и добавьте пользовательскую сортировку (demo)

$(function() { 
    $('table').on('sortBegin', function() { 
     var c = this.config, 
      col = c.sortList[0][0]; 
     if (col === 0) { 
      // column 0 sorting, add column 2 
      c.sortList.push([2,0]); 
     } else if (col === 2) { 
      // column 2 sorting, add column 4 
      c.sortList.push([4,1]); 
     } 
    }).tablesorter({ 
     theme: 'blue', 
     widgets: ['zebra', 'columns'] 
    }); 
}); 
+0

Спасибо, реализованная в моем коде и уже опробовали! Было бы разумно включить этот пример в документацию и/или примеры в github, чтобы не допустить повторного запроса этой функции. На самом деле это обязательная функция для всех таблиц, не связанных с коммерческой базой данных (статистика, наука и т. Д.). – lokapal

+0

Теперь вы можете ссылаться на столбец в опции sortAppend (например, 'sortAppend: {0: [[2,0]], 2: [[4,1]]}'. Это изменение в настоящее время доступно в главной ветви ([ref] (https://github.com/Mottie/tablesorter/commit/b8e2b65493e4777275bf18a53ce9152a884ae8ff#diff-4)) - официальное обновление скоро появится. – Mottie

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