سؤال

أنا بضعة مشاكل باستخدام tablerarter 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> 

المشكلة الثانية التي لديها هي أنه بغض النظر عن ما قمت بتعيين SortInitialorder ("DESC" أو "ASC") في TableD.js، ليس له أي تأثير لجعل الترتيب تصاعدي أو تنازليا عند النقر عليه.

يرجى أن يساعد أي شخص؟

هل كانت مفيدة؟

المحلول

لحل المشكلة التي يمكنك إنشاء رسم الخرائط الخاصة بك للرؤوس الخاصة بك إلى Data Cols. إليك ما فعلته للحصول على الوظيفة بالطريقة التي أردت ذلك.

لقد أضفت الطريقة التالية إلى TIXLESORD.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],
    ...
]

نصائح أخرى

ماذا تتوقع أن تحدث إذا قمت بالنقر فوق رأس تمتد إلى ثلاثة أعمدة؟ ما العمود الذي تتوقعه فرزه؟ بشكل عام، بالنسبة إلى TILLILDARDER، تحتاج إلى أن يكون لها رأس واحد لكل عمود.

sortInitialOrder لا يبدو أن يتم ذكره على صفحة الويب الخاصة بالرقم ولكنه موجود في التعليمات البرمجية. لقد استخدمت سابقا هذا:

sortList: [[5, 0]]

والتي سيتم في البداية فرز التصاعدي باستخدام العمود الخامس.

لدي كيندا حل المشكلة، كما أردت فقط فقط الجدول الفرز تصاعدي فقط، عدت الخط 536 إلى this.order = this.count++ % 0; مما يجعلها فرز كما أريدها.

فيما يتعلق بك Colspan، كان علي أن ألجأ للتوصيل إلى الفراغ لفرز الأعمدة المعنية. قد لا تكون العلامة الصحيحة ولكن لا أستطيع أن أرى أي طريقة أخرى لإصلاح هذا.

لقد قمت بحل مشكلة مماثلة لنفسي مع التصحيح التالي في رمز TILTILDERWERS نفسه؛

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

Allthough تم عكس مشكلتي؛ كان لدي 2 أعمدة تمتد 1 خلية collspanned. هذا يعمل على إصلاح جميع الأعمدة بعد العمود الممتد لا يزال قابلا للجميع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top