2012-03-01 50 views
1

我有表:複雜的排序HTML表格

<table id="myTable" class="tablesorter"> 
    <thead> 
    <tr> 
    <th>name</th> 
    <th>secondname</th> 
    <th>E-mail</th> 
    <th>Salary</th> 
    <th>web site</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
    <td>Smit</td> 
    <td>Jonson</td> 
    <td></td> 
    <td>$50.00</td> 
    <td>yes</td> 
    </tr> 
    <tr> 
    <td>Smit2</td> 
    <td>Jonson2</td> 
    <td></td> 
    <td>$20.00</td> 
    <td>yes</td> 
    </tr> 
    <tr> 
    <td>Bah</td> 
    <td>Frank</td> 
    <td>[email protected]</td> 
    <td>$40.00</td> 
    <td>no</td> 
    </tr> 
    <tr> 
    <td>Dou</td> 
    <td>jenson</td> 
    <td></td> 
    <td>$100.00</td> 
    <td></td> 
    </tr> 
    <tr> 
    <td>Kortni</td> 
    <td>Love</td> 
    <td></td> 
    <td>$50.00</td> 
    <td></td> 
    </tr> 
    </tbody> 
</table> 

如何排序我的表將同時三個條件:1 條件:電子郵件=空和網站= yes和工資=升; 然後去2條件的字符串:電子郵件 - 不是空的和網站=否和薪水=升序; 然後字符串 - 其他。 用JavaScript進行排序(使用jQuery)。表的所​​有數據來自Spring Controller。 Rresult:

name secondname E-mail  Salary   web site 
    Smit2 Jonson2     $20.00     yes 
    Smit  Jonson     $50.00     yes 
    Bah  Frank  [email protected] $40.00     no 
    Bah  Frank  [email protected] $330.00     no 
    Kortni Love      $50.00  
    Dou  jenson     $100.00  

回答

3

使用數據表 - http://datatables.net/

及其對jQuery和這裏一個偉大的插件是怎麼做的多列排序一個很好的例子 - http://datatables.net/release-datatables/examples/basic_init/multi_col_sort.html

/* Define two custom functions (asc and desc) for string sorting */ 
jQuery.fn.dataTableExt.oSort['string-case-asc'] = function(x,y) { 
    return ((x < y) ? -1 : ((x > y) ? 1 : 0)); 
}; 

jQuery.fn.dataTableExt.oSort['string-case-desc'] = function(x,y) { 
    return ((x < y) ? 1 : ((x > y) ? -1 : 0)); 
}; 

$(document).ready(function() { 
    /* Build the DataTable with third column using our custom sort functions */ 
    $('#example').dataTable({ 
     "aaSorting": [ [0,'asc'], [1,'asc'] ], 
     "aoColumns": [ 
      null, 
      null, 
      { "sType": 'string-case' }, 
      null, 
      null 
     ] 
    }); 
}); 

UPDATE

根據你的問題,你會尋找somethi ng這樣的:

... 
    "aaSorting": [ [2,'asc'], [4,'asc'], [3, 'asc' ], 
... 

這是電子郵件,網站,薪酬(從零開始的第2,4和3列)。如果這樣做不完美,請在需要的地方將'desc'換成'asc'。

+0

如何設置我的例子在這個plagin的條件? – Gene 2012-03-01 19:14:27

+0

請參閱更新,這應該差不多 – shanabus 2012-03-01 21:01:52

+0

這個解決方案解決了您的問題嗎?如果是這樣,請標記爲已接受的答案 – shanabus 2012-08-07 12:30:41