문제

Tablesterter 2.0.3을 사용하는 몇 가지 문제가 있습니다.

첫 번째 문제는 테이블에 colspan을 설정할 때입니다. 기본적으로 아래 에서이 작업을 수행하면 각 열을 정렬하지 않습니다.

<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> 

내가 가진 두 번째 문제는 내가 테이블 러 (Tableserter.js)에서 SortInitialorder ( "desc"또는 "asc")를 설정하더라도 클릭 할 때 정렬 오름차순 또는 내림차순을 만드는 데 아무런 영향을 미치지 않는다는 것입니다.

누구든지 도와 줄 수 있습니까?

도움이 되었습니까?

해결책

문제를 해결하려면 데이터 콜에 헤더를 자신만의 맵핑을 만들 수 있습니다. 내가 원하는 방식으로 기능을 얻기 위해 내가 한 일은 다음과 같습니다.

테이블 orter.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]);

테이블 러가 통과 할 때 a customMap[[header_col_id, data_col_id]] 귀하의 경우에는 다음과 같습니다.

customMap[
    [2, 4],
    [3, 5],
    ...
]

다른 팁

3 개의 열에 걸쳐 헤더를 클릭하면 어떻게 될까요? 어떤 열을 정렬 할 것으로 예상됩니까? 일반적으로 테이블 러가 작동하려면 각 열에 하나의 헤더가 있어야합니다.

sortInitialOrder 테이블 러의 웹 페이지에서 언급되지 않은 것 같지만 코드에는 존재합니다. 나는 이전에 이것을 사용했습니다.

sortList: [[5, 0]]

5 번째 열을 사용하여 오름차순을 정렬합니다.

나는 또한 테이블이 오름차순을 정렬하기를 원했기 때문에 문제를 해결했습니다. 536 행을 수정했습니다. this.order = this.count++ % 0; 내가 원하는대로 분류합니다.

Colspan과 관련하여, 나는 방금 각 열을 정렬하기 위해 공백을 가지고있는 것에 의지해야했습니다. 올바른 마크 업은 아닐 수도 있지만 이것을 고치는 다른 방법을 볼 수 없습니다.

나는 테이블 코드 자체의 다음 패치로 비슷한 문제를 해결했다.

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]));
+                        }
                 }

내 문제가 바뀌 었음에도 불구하고; 1 개의 Colnspanned 셀에 걸쳐 2 개의 열이있었습니다. 스파닝 된 열이 여전히 정렬 된 후에 모든 열을 수정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top