Jquery排序DataTable

时间:2015-06-12 05:53:28

标签: jquery sorting datatables

我在表格中有一个尺寸列,显示包含单位的文件大小(例如1KB10MB1GB等。

由于单位部分是字符串整体大小值,因此作为字符串输入到表中,因此在完成排序时,它会进行字符串排序。 例如,它的排序形式如下:5KB 500MB 6KB这是不正确的。

所以我想知道问题的解决方案是什么?是否有任何参数设置可以解决此问题?

1 个答案:

答案 0 :(得分:0)

有一个DataTables排序插件 - File size。从手册:

  

处理计算机文件大小时,通常会附加帖子   将B,KB,MB或GB等修复为字符串以便轻松表示   文件大小的数量级。此插件允许排序   考虑这些尺寸指标。

除了jQuery和DataTables库,您还需要包含最新的插件脚本(请参阅最新链接的插件页面)。

示例初始化代码如下所示:

$('#example').DataTable({
    "columnDefs": [
        { "type": "file-size", "targets": 1 }
    ]    
});

属性targets表示包含文件大小的从零开始的列索引。

请参阅下面的示例进行演示。

$(document).ready(function() {
  $('#example').DataTable({
     "columnDefs": [
       { "type": "file-size", "targets": 1 }
     ]    
  });
});
<!DOCTYPE html>
<html>

<head>
<meta charset="ISO-8859-1">

<link href="//cdn.datatables.net/1.10.7/css/jquery.dataTables.min.css" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>
<script src="//cdn.datatables.net/plug-ins/1.10.7/sorting/file-size.js"></script>
</head>
<body>
<table id="example" class="display" cellspacing="0" width="100%">

  <thead>
    <tr>
      <th>Name</th>
      <th>Size</th>
    </tr>
  </thead>

  <tfoot>
    <tr>
      <th>Name</th>
      <th>Size</th>
    </tr>
  </tfoot>

  <tbody>
    <tr>
      <td>Small.mp3</td>
      <td>9 KB</td>
    </tr>
    <tr>
      <td>Normal.mp3</td>
      <td>8 MB</td>
    </tr>
    <tr>
      <td>Large.mp3</td>
      <td>7 GB</td>
    </tr>
    <tr>
      <td>Smallest.mp3</td>
      <td>10 B</td>
    </tr>
  </tbody>
</table>
</body>
</html>