使用Jquery Datatables对data-sort属性中的值进行自定义排序

Pak*_*eet 25 html sorting jquery datatables custom-data-attribute

我必须使用Jquery Datatables进行一些自定义排序.我不想为每个自定义排序编写自定义排序函数.

我想定义一个要排序的值,并且如果定义了值,则Datatables会忽略原始列值.

例如:

<td data-sort="111123">E 1.111,23</td>

我希望Jquery Datatables以数字方式对此列进行排序111123.

<td data-sort="19801220">20-12-1980</td>

我希望Jquery Datatables以数字方式对此列进行排序19801220.

<td>a string</td>

我希望Jquery Datatables按原始值对此列进行排序a string.

http://www.datatables.net/plug-ins/sorting有"隐藏标题数字排序",它接近我想要的,但要求我指定这个自定义排序适用于哪一列的每个数据表.我有太多不同大小的数据表,可以在合理的时间内完成.我只想让Datatables总是对这个隐藏的值/ data-*属性进行排序(如果它存在).无需在特定列上进行自定义排序定义.

相关:jQuery DataTables:如何按自定义参数值而不是单元格的内容进行排序?但遗憾的是,没有回答如何简单地通过自定义参数进行排序,而是指向自定义排序脚本.

小智 24

例如,您可以使用数据顺序attr

<table class="table table-bordered table-hover">
<thead>
    <tr>
        <th>Date</th>
        <th>Count</th>
    </tr>
</thead>
<tbody>
<?php
   $count = 0;
   foreach($users as $user) {?>
      <tr>
         <td data-order="<?php echo $count ?>">
            <?php echo $user['createdDate']; ?>
         </td>
         <td>
            <?php echo $user['count']; ?>
         </td>
         </tr>
   <?php
      $count++;
   }?>
   <tr>
      <td data-order="999999999999999999999999999"> <!--always last-->
          Total
      </td>
      <td>
         <?php echo count($users); ?>
      </td>
  </tr>
Run Code Online (Sandbox Code Playgroud)

更多信息HTML5 data-*属性


Pak*_*eet 13

我找到了一个适合我的简单解决方案,并且不需要太多代码或更改datatables.js.

它与问题的要求非常相似,但并不完全相同.

而不是data-sort你可以使用HTML注释标签.

<td data-sort="111123">E 1.111,23</td>

<td><!-- 000000111123 -->E 1.111,23</td>

通过零填充,int它们将被分类为a string.零填充使排序的行为与您期望的一样:将整数从高到低排序.

解决方案适用于日期,整数和字符串.对于日期和整数,您可以使用脚本语言以您希望的方式输出它们(例如:零填充,格式化为yyyy-mm-dd).

  • 这对我不起作用,所以我使用了隐藏的跨度:<td> <span style ="display:none"> timestamp </ span>要显示的文本</ td> (5认同)