数据表排序,带有href

时间:2013-09-09 13:01:59

标签: jquery sorting datatable

我正在尝试使用.dataTable进行排序,它工作正常,除了包含我在其上使用href标记的数字的列。 没有标签,排序工作正常,但是当我使用标签时,它似乎将它们排序为字符串:

1
2
3
11
14
21

变为:

1
11
14
2
21
etc.

这是代码:

        $('#datatableme').dataTable({
            "aaSorting": [[0, "desc"]],
            "aoColumns": [
                         null,
                         null,
                         null,
                         null,
                         null,
                         null,
                         null
                     ],
            "sPaginationType": "full_numbers",
            "bPaginate": true,
            "bLengthChange": false,
            "bFilter": false,
            "bSort": true,
            "bInfo": true,
            "bAutoWidth": true,
            "iDisplayLength": 40,
            "bStateSave": false
        });

任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:1)

2个选项。

  1. 使用此处的自定义排序插件:http://datatables.net/plug-ins/sorting,它允许您定义排序类型“带数字的html”,它会删除html标签,然后按数值而不是字符串对剩余数据进行排序

  2. 在列旁边创建一个ghost / dummy列,在列定义中将其设置为不可见,然后使用“iDataSort”指定应在此“隐藏”列上进行排序,当您单击可见时列排序按钮

答案 1 :(得分:1)

有一个alt解决方案......你可以在HREF之前简单地在A标签上添加ID和NAME ......

例如,我按名称排序我的表...当我把

<a name="John Doe" href="link">John Doe</a>

DataTable搞砸了所有......

所以我只是在HREF之前添加NAME ......看起来像这样:

<a name="1" href="link">1</a>
<a name="3" href="link">3</a>
<a name="2" href="link">2</a>

对我有用。 所以我相信你可以尝试类似的东西:

object(Automattic\WooCommerce\HttpClient\Request)#85 (5) {
  ["url":"Automattic\WooCommerce\HttpClient\Request":private]=>
  string(67) "https://example.com/wp-json/wc/v2/products/categories/?per_page=100"
  ["method":"Automattic\WooCommerce\HttpClient\Request":private]=>
  string(3) "GET"
  ["parameters":"Automattic\WooCommerce\HttpClient\Request":private]=>
  array(1) {
    ["per_page"]=>
    int(100)
  }
  ["headers":"Automattic\WooCommerce\HttpClient\Request":private]=>
  array(2) {
    ["Accept"]=>
    string(16) "application/json"
    ["User-Agent"]=>
    string(32) "WooCommerce API Client-PHP/1.3.0"
  }
  ["body":"Automattic\WooCommerce\HttpClient\Request":private]=>
  string(0) ""
}

DataTable应该对此进行正常排序。

答案 2 :(得分:0)

您需要将商家信息中任意列的sType参数设置为html。像这样:

"aoColumns": [
    { "sType": "html" },
    null,
    null,
    null,
    null,
    null,
    null
],

这意味着单元格中的任何HTML都将在sort函数中被忽略。

以下是DataTables documentation的一个工作示例。

答案 3 :(得分:0)

DataTables将尝试自动检测您的表中包含的数据类型,以便准确地对此数据进行排序和过滤

请注意,在DataTables 1.7之前,未自动检测到HTML类型,并且必须为列指定sType

这可能会对你有所帮助

http://www.datatables.net/release-datatables/examples/advanced_init/html_sort.html

答案 4 :(得分:0)

感谢李(和办公室里的人:)),我找到了答案,这就是它的完成方式:

            $('#datatableme').dataTable({
            "aaSorting": [[0, "desc"]],
            "aoColumns": [
                         null,
                         null,
                         null,
                         null,
                         { "iDataSort": 6 },
                         null,
                         { "bVisible": false }

最后一列与我想要整理的列相同,但没有href标记。 这是表格:

                                        <td>
                                            <a href=""><%=arr("num")%></a>
                                        </td>
                                        <td>
                                            <%=arr("Name")%>
                                        </td>
                                        <td>
                                            <%=arr("num")%>
                                        </td>