为什么赢得了.datatables排序正确?

时间:2014-08-26 14:25:29

标签: jquery sorting datatable

我使用的是jquery插件.dataTables,无法正确排序。在阅读有关堆栈溢出的类似问题后,我仍然感到困惑,需要帮助!我发布下面的代码。任何帮助,将不胜感激。这是表格的html部分:

<thead>
     <tr>
        <th>Store Name</th>
        <th>District Manager</th>
        <th>Store ID</th>
        <th>Payday</th>
        <th>Title</th>
        <th>Payday/Title Total</th>
     </tr>
</thead>
<tbody>
<?php
foreach($bigQuery as $i => $row) {
    $total = $row['mtd_payday'] + $row['mtd_title'];
    echo "<tr>" . "<td>" . $row['store_name'] . "</td>";
    echo "<td >" . $row['district_manager'] . "</td>";
    echo "<td >" . $row['store_id'] . "</td>";
    echo "<td data-sort=\"". $row['mtd_payday']. "\">" . money_format('%.2n',  $row['mtd_payday']) . "</td>";
    echo "<td data-sort=\"". $row['mtd_title']. "\">" . money_format('%.2n',  $row['mtd_title']) . "</td>";
    echo "<td data-sort=\"$total\">" . money_format('%.2n',  $total) . "</td>" . "</tr>";
    $total = "";
} ?> 
</tbody>

我使用查询中的数据填充表。该表的javascript如下:

<script>
//initializes the dataTable plugin. 
$(document).ready(function() {
    var table = $('#balances').DataTable({
        tableTools: {
            "sSwfPath": "../copy_csv_xls_pdf.swf"  
        }
});
var tt = new $.fn.dataTable.TableTools( table );
$( tt.fnContainer() ).insertBefore('div.dataTables_wrapper');  }); 
</script>

我是一名新程序员,对.dataTables插件完全陌生。当我尝试使用表顶部的排序按钮时,它没有正确排序。

1 个答案:

答案 0 :(得分:1)

数据表应默认排序。这让我相信你的html语法存在问题。

检查后,我发现<tr>中的结尾<thead>不正确。添加/并将其设为</tr>


看到你的照片后,它正在对它进行排序并将列视为strings。要更改列的数据类型以进行排序,您需要将sType添加到列中。默认支持的类型是字符串,数字,日期和HTML。

代码应更改为:

var table = $('#balances').DataTable({
    "aoColumns": [
        null,
        null,
        null,
        { "sType": "numeric" },
        { "sType": "numeric" },
        { "sType": "numeric" }
    ],
    tableTools: {
        "sSwfPath": "../copy_csv_xls_pdf.swf"  
    }
});