首页 文章

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

提问于
浏览
23

我必须使用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有"Hidden title numeric sorting",它接近我想要的,但要求我为每个数据表指定此自定义排序应用于哪一列 . 我有太多不同大小的数据表,可以在合理的时间内完成 . 我只想让Datatables总是对这个隐藏的值/ data- *属性进行排序(如果它存在) . 无需在特定列上进行自定义排序定义 .

相关:jQuery DataTables: how to sort by custom parameter value rather than the content of the cell?但遗憾的是,没有回答如何仅通过自定义参数进行排序,而是指向自定义排序脚本的指针 .

2 回答

  • 13

    例如,您可以使用数据顺序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>
    

    更多信息HTML5 data-* attributes

  • 22

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

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

    您可以使用HTML注释标记代替 data-sort .

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

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

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

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

相关问题