如何使用 bootstrap table 中的文件大小进行排序?
How to do sorting with filesizes in bootstrap table?
我建了这个网格:
到目前为止一切顺利,但是当我将具有文件大小的列标记为可排序时,它排序不佳。如何使文件大小列可排序?
谢谢。
会不会是您的数据与列的格式有问题? Here is a JSFIDDLE example modified from the bootstrap-table examples 表示 data-sortable 装饰。请注意,数据没有 'MB' - 这使数据与数据的表示分开。 data-formatter decoration 允许你指定一个函数来修饰数据(或者创建按钮或其他HTML)。
$(函数(){
$('#table').bootstrapTable({
数据:数据
});
});
function formatMegaBytes(value,row,index){
return value + ' MB';
}
我手工做到了:
HTML:
<table id="table" class="table borderless">
<thead>
<tr>
<th data-field="Type" data-sortable="false" data-formatter="typeFormatter" data-cell-style="typeStyle" class="text-center">Type</th>
<th data-field="Content Type" data-sortable="true">Content Type</th>
<th data-field="Name" data-sortable="true">Name</th>
<th data-field="Received" data-sortable="true">Received</th>
<th data-field="File Size" data-sortable="true" data-sorter="filesizeSorter">File Size</th>
<th data-field="" data-formatter="operateFormatter" data-events="operateEvents"></th>
</tr>
</thead>
</table>
JavaScript:
//filesize column custom formatter
function filesizeSorter(a, b) {
var a_number = retnum(a);
var b_number = retnum(b);
a = a_number;
b = b_number;
if (a > b) return 1;
if (a < b) return -1;
return 0;
}
//return bytes of filesize
function retnum(number) {
var num = number.replace(/[^0-9]/g, '');
var filesizename = number.replace(/[^a-zA-Z]+/g, '').toUpperCase();
num = parseInt(num, 10);
switch (filesizename) {
case "KB":
num = num * 1024;
break;
case "MB":
num = num * Math.pow(1024, 2);
break;
case "GB":
num = num * Math.pow(1024, 3);
break;
case "TB":
num = num * Math.pow(1024, 4);
break;
}
return num;
}
我建了这个网格:
到目前为止一切顺利,但是当我将具有文件大小的列标记为可排序时,它排序不佳。如何使文件大小列可排序?
谢谢。
会不会是您的数据与列的格式有问题? Here is a JSFIDDLE example modified from the bootstrap-table examples 表示 data-sortable 装饰。请注意,数据没有 'MB' - 这使数据与数据的表示分开。 data-formatter decoration 允许你指定一个函数来修饰数据(或者创建按钮或其他HTML)。
$(函数(){ $('#table').bootstrapTable({ 数据:数据 }); });
function formatMegaBytes(value,row,index){
return value + ' MB';
}
我手工做到了:
HTML:
<table id="table" class="table borderless">
<thead>
<tr>
<th data-field="Type" data-sortable="false" data-formatter="typeFormatter" data-cell-style="typeStyle" class="text-center">Type</th>
<th data-field="Content Type" data-sortable="true">Content Type</th>
<th data-field="Name" data-sortable="true">Name</th>
<th data-field="Received" data-sortable="true">Received</th>
<th data-field="File Size" data-sortable="true" data-sorter="filesizeSorter">File Size</th>
<th data-field="" data-formatter="operateFormatter" data-events="operateEvents"></th>
</tr>
</thead>
</table>
JavaScript:
//filesize column custom formatter
function filesizeSorter(a, b) {
var a_number = retnum(a);
var b_number = retnum(b);
a = a_number;
b = b_number;
if (a > b) return 1;
if (a < b) return -1;
return 0;
}
//return bytes of filesize
function retnum(number) {
var num = number.replace(/[^0-9]/g, '');
var filesizename = number.replace(/[^a-zA-Z]+/g, '').toUpperCase();
num = parseInt(num, 10);
switch (filesizename) {
case "KB":
num = num * 1024;
break;
case "MB":
num = num * Math.pow(1024, 2);
break;
case "GB":
num = num * Math.pow(1024, 3);
break;
case "TB":
num = num * Math.pow(1024, 4);
break;
}
return num;
}