2012-12-10 35 views
0

我有一個看起來像這樣我需要使它所以我Bootstrap Datatables腳本將的內部HTML排序表...數據表:需要通過數據的HTML數值列排序

<table id="myTable"> 
    <tr> 
     <td><a href="site.com?id=1">1</a></td> 
     <td>Foo</td> 
    </tr> 
    <tr> 
     <td><a href="site.com?id=9">9</a></td> 
     <td>Bar</td> 
    </tr> 
    <tr> 
     <td><a href="site.com?id=10">10</a></td> 
     <td>Baz</td> 
    </tr> 
</table> 

錨標籤,並按數字排序。目前,它的排序是這樣的...

1 Foo 
10 Baz 
9 Bar 

但我需要它這樣的排序...

1 Foo 
9 Bar 
10 Baz 

我真的不知道如何去了解這一點。我有它的排序,但它認爲內部的HTML是一個字符串,而不是一個數字:(

+0

這可能是一個重複的帖子:http://stackoverflow.com/questions/10305552/how-to-make-work-datatables-with-natural-sort-plugin – karthikr

+0

根據你鏈接到的頁面,「數據通常可以是一個複雜的數字和字母組合(文件名是一個常見的例子),並且以自然的方式對它們進行排序是一個相當困難的問題。幸運的是,其他作者已經在這方面做了一些工作 - 下面的插件-in使用Jim Palmer的naturalSort()函數(在此處下載)以在DataTable中提供自然排序。「看起來該頁面列出了處理這種情況的各種方法。 – ultranaut

+0

我假設這是與服務器端的數據? – bikedorkseattle

回答

2

我假設你正在生成你的鏈接服務器端。你最好在客戶端上呈現這兩個原因:

  1. 你的排序將工作
  2. 你的有效載荷將變小

要做到這一點,你需要使用aoColumnsDef和aTargets類似於下面

"aoColumnDefs": [ 
    { 
     "aTargets": [ 1 ], 
     "fnRender": function (o, val) { 
      var link = "<a class='' href='site.com?id=" + o.aData[0] + "'>" + o.aData[0] + "</a>"; 
      return link; 
     } 
    }, 

希望這會有所幫助。

+0

這很有用,謝謝,但它沒有排序。是否有可能對它進行排序和渲染?我試過bSortable:真的,但它什麼也沒做。 – PolishHurricane

+1

好吧我想通了,你需要使用:bUseRendered:false 謝謝! – PolishHurricane

+1

這取決於最終用戶的瀏覽器 - DataTables的美麗之處在於它會優雅地降級 - 如果瀏覽器上的JS關閉,它將只顯示一個標準的HTML表格。使用您的解決方案,純HTML表格將不包含鏈接。這也可能會導致漫遊器爬行頁面的問題... – Adam