Handsontable排序整数像字符串

时间:2014-09-16 19:01:39

标签: jquery json handsontable

我有一个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) {

    }
});
})

2 个答案:

答案 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;显示为空字符串,并像其他空字符串一样在底部排序。