我有一个Handsontable 0.11.2的实现,它接收JSON格式的数据。我已经使列可排序并且有一个数字列(我将其定义为数字)仍然像字符串一样排序。我试着通过在结尾格式中添加.0来使它成为一个浮点数,即使它显示为0,它仍然作为字符串排序。我已经看到一些可能的解决方案进行谷歌搜索,但没有找到一个有效的解决方案。我的动手设置如下,任何建议都非常感谢。
$(document).on('click','.report',function(event) {
$.ajax({
type: "GET",
url: 'pending.php',
dataType: "json",
success: function(json) {
$('.item').remove();
$(".welcome").hide();
$(".carousel-inner").append("<div id='faTable'></div>");
var $container = $("#faTable");
var $parent = $container.parent();
$container.handsontable({
data: json.data,
startRows: 10,
startCols: 8,
rowHeaders: true,
manualColumnResize: true,
manualColumnMove: true,
columnSorting: true,
colHeaders: ['Lot','Number','Reason','Results','Billback','Status','Rank'],
contextMenu: true,
colWidths: [80,150,300,200,200,50,50],
columns: [
{data: "lot", type: 'text',readOnly: true},
{data: "number",type: 'text',readOnly: true},
{data: "reason", type: 'text',readOnly: true},
{data: "results", type: 'text',readOnly: true},
{data: "billback", type: 'text',readOnly: true},
{data: "status", type: 'text',readOnly: true},
{data: "rank", type: 'numeric',readOnly: true}
]
});
},
error: function(data) {
}
});
})
答案 0 :(得分:0)
这里记录了一个开放的错误: https://github.com/handsontable/handsontable/issues/883
在我将其添加到动手数据集之前,我最终只是过滤了可能是这样的数字的所有内容:
var filterFloat = function (value) {
if(/^(\-|\+)?([0-9]+(\.[0-9]+)?|Infinity)$/
.test(value))
return Number(value);
return NaN;
}
// for the sake of sorting numbers vs strings:
if(filterFloat(stringNumberVar)){
stringNumberVar = filterFloat(stringNumberVar);
}
似乎应该修复一些东西,或者你可以相当容易地添加到分叉,因为它们的日期排序也有点变幻无常。
如果我决定承担这项任务,我会回来告诉你。
答案 1 :(得分:0)
我在使用PHP 5.5查询MySQL并转换为JSON字符串时,在0.15.0-beta2中看到了这个问题。我发现该列的数据也需要转换为数字,因为MySQL查询中的所有数据都以字符串形式返回。在30列中,有四列需要进行转换,因此我为SQL结果编写了这个循环:
$res = Zend_Registry::get('db')->fetchAll('
SELECT *
FROM table
');
foreach($res as &$s) {
$s['table_pk'] = (int) $s['table_pk'];
$s['position'] = ($s['position']!=0 ? (int) $s['position'] : null);
$s['height'] = ($s['height']!=0 ? (int) $s['height'] : null);
$s['count'] = ($s['count']!=0 ? (int) $s['count'] : null);
}
&#39; null&#39;显示为空字符串,并像其他空字符串一样在底部排序。