2010-03-29 105 views
1

我使用tableSorter jquery插件显示数据库表。我有大量的记录,所以我必须分页。如果只有一页数据,我可以允许tablesorter进行客户端排序,但是当我有更多的页面时,我需要使用ORDER BY sql语句指定排序顺序,以便所有页面都受到影响。JQuery tablesorter Ajax排序

我尝试使用startSort事件没有太大的成功。首先,我修改tableSorter代码以获取作为参数sortList。然后我在startSort事件中使用ajax调用来调用正在解析sortList数组构造有效的sql排序的MVC处理程序。我还遇到了未被解雇的事件(当我使用班次指定多个排序列)或事件触发两次时的问题。

有没有人知道一些插件或知道一种方法来实现呢?

我试过的东西的短代码片段看起来像这样;

function OnAjaxSuccess() { 


    SortList = typeof SortList == "undefined" ? [] : SortList 
    $("table").tablesorter 
     ({ 
      ... 
    sortList = SortList 
     }); 

    $("table").bind("sortStart", function(event, newSortList) 
         { 
          if (PageCount = 1) return; 
          SortList = newSortList; 
          var url = '/Report/Sort/' + SortList.toString(); 
          $("#Report").load(url, null, OnAjaxSuccess);        
         }) 

谢谢。

回答

1

您可以使用插件http://www.datatables.net/,非常轻,可以分页,并且可以通过正确的服务器端处理直接连接到数据库。

+0

我想喜欢那个插件,我真的这样做。然而,当他们说“一个函数调用来初始化表所需的全部内容”并且同一页上的示例具有一组配置元素时,它们会让我大失所望。 – Powerlord 2010-03-29 14:24:17

+0

你没有看正确的样品。请参阅以这种方式工作的“零配置”页面。 – majkinetor 2010-03-29 17:14:05

+0

$( '#例子')数据表。({ \t “bJQueryUI”:真的, \t “sPaginationType”: “full_numbers” }); 这些配置元素是可选的,它可能不是把它们放在主页上的最聪明的东西,但仍然是。 – rnaud 2010-03-29 17:23:30