Tablesorter 2.0.3 выпуск colspan - PullRequest
       9

Tablesorter 2.0.3 выпуск colspan

2 голосов
/ 10 января 2010

У меня есть пара проблем с использованием Tablesorter 2.0.3.

Первая проблема, когда я ставлю кольспан на свой стол. В основном, когда я делаю это, как показано ниже, он не сортирует соответствующие столбцы.

<table> 
<thead> 
        <th colspan="3"></th>  
        <th>Four</th> 
        <th>Five</th>
        <th>Six</th>
        <th>Seven</th>  
</thead> 
<tbody> 
<tr> 
        <td>1</td> 
        <td>2</td> 
        <td>3</td> 
        <td>4</td>
        <td>5</td> 
        <td>6</td>
        <td>7</td>
</tr>  
</tbody> 
</table> 

Вторая проблема, с которой я столкнулся, заключается в том, что независимо от того, что я установил sortInitialOrder ("desc" или "asc") в tablesorter.js, он не влияет на сортировку по возрастанию или убыванию при нажатии на.

Может кто-нибудь помочь?

Ответы [ 4 ]

3 голосов
/ 21 января 2010

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

Я добавил следующий метод в tablesorter.js:

function findInMap(map, index, reverse) {
    for(var i = 0; i < map.length; ++i) {
        if(map[i][reverse ? 1 : 0] == index) return map[i][reverse ? 0 : 1];
    }

    return index;
}

А также добавил следующее к this.defaults

customMap: []

, измените следующий метод:

function setHeadersCss(table,$headers, list, css) {
    $headers.removeClass(css[0]).removeClass(css[1]);

    var h = [];
    $headers.each(function(offset) {
        if(!this.sortDisabled) {
            h[this.column] = $(this);                   
        }
    });

    var l = list.length; 

    for(var i=0; i < l; i++) {
        var header = list[i];
        var headerIndex = findInMap(table.config.customMap, header[0], true);
        h[headerIndex].addClass(css[header[1]]);
    }
}

И последнее, но не менее важное: добавьте / измените следующее в $headers.click(function(e) {

Добавить:

var ia = findInMap(config.customMap, i, false);

Изменение: config.sortList.push([i,this.order]); К config.sortList.push([ia,this.order]);

Когда вы инициируете сортировщик таблиц, передайте customMap[[header_col_id, data_col_id]] В вашем случае это будет:

customMap[
    [2, 4],
    [3, 5],
    ...
]
2 голосов
/ 10 января 2010

Что бы вы ожидали, если бы щелкнули заголовок, охватывающий три столбца? По какому столбцу вы хотите его отсортировать? Как правило, для работы TableSorter необходимо иметь один заголовок для каждого столбца.

sortInitialOrder, кажется, не упоминается на веб-странице для TableSorter, но она существует в коде. Я только ранее использовал это:

sortList: [[5, 0]]

, который первоначально будет сортировать по возрастанию, используя 5-й столбец.

0 голосов
/ 22 августа 2011

Я решил аналогичную проблему для себя с помощью следующего патча в самом коде таблиц;

Index: jquery.tablesorter.js
===================================================================
--- jquery.tablesorter.js   (.../original)  (revision x)
+++ jquery.tablesorter.js   (.../mine)  (revision y)
@@ -278,7 +278,10 @@
                     cache.row.push(c);

                     for (var j = 0; j < totalCells; ++j) {
-                        cols.push(parsers[j].format(getElementText(table.config, c[0].cells[j]), table, c[0].cells[j]));
+                        var cSpan = c[0].cells[j].colSpan || 1;
+                        while (cSpan--) {
+                            cols.push(parsers[j].format(getElementText(table.config, c[0].cells[j]), table, c[0].cells[j]));
+                        }
                 }

Хотя моя проблема была обращена вспять; У меня было 2 столбца, охватывающих 1 ячейку с разметкой. Это исправляет все столбцы после составного столбца, которые по-прежнему можно сортировать.

0 голосов
/ 10 января 2010

Я вроде как решил проблему, так как я также хотел, чтобы таблица сортировалась только по возрастанию, я изменил строку 536 на this.order = this.count++ % 0;, что позволяет сортировать ее так, как я хочу.

Что касается colspan, мне просто пришлось прибегнуть к использованию пробелов для сортировки соответствующих столбцов. Возможно, это неправильная разметка, но я не вижу другого способа исправить это.

...