2011-11-18 97 views
1

我正在尝试使用jQuery tablesorter来排序我的gridview。 大多数 gridview中的列包含文本框,一些复选框和一些常规文本。默认情况下,tablesorter似乎只是对常规文本进行排序。由于我的jQuery体验非常少,熟悉tablesorter的人可以帮助我理解我需要做些什么才能让tablesorter对带有文本框数据的列进行排序以及只对纯文本进行排序?使用JQuery Tablesorter对GridView元素进行排序

编辑与代码

<script src="../scripts/jquery-1.7.min.js" type="text/javascript"></script> 
<script src="../scripts/jquery.tablesorter.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("parts_gv").tablesorter({ 
      textExtraction: function (elem) { 
       var $input = $(elem).find("input[type=text]"); 
       if ($input.length > 0) { 
        return $input.val(); 
       } 
       else { 
        return $(elem).text(); 
       } 
      } 
     }); 
    }); 
</script> 

回答

2

您需要定义一个custom text extraction function。这并不难:

$("table.sortable").tablesorter({ 
    textExtraction: function(elem) { 
    var $input = $("input[type=text]", elem); 

    return $input.val() || $(elem).text(); 
    } 
}); 
+0

感谢您的回复。我尝试了你的建议,你的代码对我来说很有意义。但是,当我使用文本框对列进行排序而不是按内部数据进行排序时,它仍然只是翻转网格。 – novacara

+0

@novacara:尝试添加一个'console.log()'来查看提取器函数实际返回的情况。也许它需要对HTML结构进行一些额外的调整。设置一个断点并逐步处理几个案例也可以看到发生了什么。 – Tomalak

+0

我在$ input中分配了一个断点,似乎并没有命中。是否有我缺少的东西,我需要做的应用提取?我在函数中有正确的gridview名称。我也知道tablesorter本身正在工作,因为我的网格翻转。 – novacara

相关问题