2010-05-13 33 views
1

我看到,在tableSorter中,您可以在涉及到我的時間排序一頁。tableSorter限制(排序)一次一頁?

一次只能排序1頁的結果,這是相當有限的。如果您有跨多頁的查詢結果,您將如何處理?

如果有人知道更好,請隨時糾正我,如果我不正確

謝謝。

+0

對於排序在多個頁面的數據我用我自己的排序功能,這做一個AJAX請求使用jQuery到服務器和SQL數據進行排序,並用來自服務器的數據填充結果。我認爲這是最好的方法 - 因爲直接在jQuery中執行它會要求你加載你在頁面中劃分的所有數據,如果只是幾頁,這可能沒問題,但對於較大的頁面數據集,並且有點違背將結果劃分爲頁面的原則。 – alexteg 2010-05-13 15:35:23

+0

你有沒有示例代碼,我可以看到你如何通過ajax-requst實現? – 2010-05-13 15:37:28

+0

當然,請參閱下面的答案。 – alexteg 2010-05-13 16:17:12

回答

2

我會分配一個ID到thead中的表中,這個表對應於你在SQL表中的列。

$("table thead th").click(function(){ 
    $.getJSON('ajax/get_results.php', 
     {sortby: $(this).attr('id')}, 
     function(data) { 
      $.each(data, function(){ 
       // fill table here 
      } 
     }); 
}); 

你可以進行排序,你也可以使用使用AJAX改變頁面,如果你是不是已經在做了表創建一些功能。

而在後端則有SQL

"SELECT * FROM table ORDER BY ".$_GET['sortby'] 

當然,你應該確保該sortby進行排序,例如與允許值的數組過濾。我建議建立與允許列排序名稱的數組,並使用array_intersect()功能只能過濾掉允許值或將所有結果的陣列

if(isset($allowed_columns[$_GET['sortby']])) 

然後只輸出這一切在JSON只是檢查和然後:

echo json_encode($array_with_results); 

我猜你想在JSON輸出財產以後這樣的:

{ 
    {col1: 'row1',col2: 'row1',col3: 'row1'}, 
    {col1: 'row2',col2: 'row2',col3: 'row2'}, 
    {col1: 'row3',col2: 'row3',col3: 'row3'} 
} 
+0

謝謝,但我不知道PHP,你有任何機會在asp.net完成? – 2010-05-13 17:17:42

+0

那麼,我不知道asp.net的另一方面。但JavaScript將是相同的,而MsSQL也有ORDER BY。所以你只需要一些創建JSON的函數。如果ASP沒有它,你可以用循環手動完成。但我認爲你可以在這裏找到一些方法http://json.org/,否則你可以在維基百科上看到JSON結構:http://en.wikipedia.org/wiki/JSON#Data_types.2C_syntax_and_example – alexteg 2010-05-13 19:05:36

2

我無意中發現這個帖子的時候,我Searchin的克解決同樣的問題。
(我知道這是舊的文章,但我有一個答案,這可能有助於讓人們同樣的問題,甚至你)

this plugin: "tablesorter pager"看看,它讓你把尋呼機上的頂部「tablesorter」排序表。
雖然它可能是有用的。

享受 ¯\ _(ツ)_ /¯