【问题标题】:Google table 100 comes before 10 and 8 comes at the end谷歌表 100 排在 10 之前,8 排在最后
【发布时间】:2016-10-24 08:34:32
【问题描述】:

我使用谷歌表格。 当我按照 img 1 中看到的从 10 到 99 的数字对其进行排序时,它的排序很好。

--- IMG 1 ----

但是当我使用一个数字 1-9 或超过 100 时,它的排序并不像您在 img 2 中看到的那样好。

---- IMG 2 ----

我该如何解决这个问题?

我使用以下代码。

<script type='text/javascript'>
google.load('visualization', '1', {packages:['table']});
google.setOnLoadCallback(drawTable);
function drawTable() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'ID');
    data.addColumn('string', 'Name');
    data.addColumn('string', 'Image');
    data.addColumn('string', 'Image Size');
    data.addColumn('string', 'Order');
    data.addColumn('string', 'Status');
    data.addColumn('string', 'Actions');
    data.addRows([
<?php
if (count($slideshow))
{
    foreach($slideshow as $item)
    {
        $namelink = anchor("$module/admin/edit/".$item['id'],$item['name']);
        $subject = $item['image'];
        $imagename = getImageName($subject);
        $imagepath = getImagePath($subject);
        $filepath = base_url().$imagepath;
        $imagecont = "<img width=\"70px\" src=\'".$filepath."\' />";
        $filesize = getimagesize($imagepath);
        $filesizecont = "width: ".$filesize[0]. "px<br />height: ".$filesize[1]. "px";
        $item = str_replace("'", "\'", $item);
        /* $public_icon = ($item['public']==1 ? 'tick':'cross'); */
        /* $publiclink = anchor("kaimonokago/admin/changecatBooleanStatus/$module/".$item['id']."/public",$this->bep_assets->icon($public_icon), array('class' => $item['public']. ' changestatus')); */
        $active_icon = ($item['status']=='active'?'tick':'cross');
        $statuslink = anchor("kaimonokago/admin/changeStatus/$module/".$item['id'],$this->bep_assets->icon($active_icon), array('class' => $item['status']. ' changestatus'));
        $editlink = anchor($module.'/admin/edit/'.$item['id'],$this->bep_assets->icon('pencil'));
        if ($item['status']=='inactive')
        {
            $deletelink = anchor('kaimonokago/admin/delete/'.$module.'/'.$item['id'],$this->bep_assets->icon('delete'), array("class" => "delete_link","onclick"=>"return confirmSubmit(\'".$item['name']."\')"));
        }
        else
        {
            $deletelink ='';
        }
        //$link = "testing";  
        echo "['".$item['id']."','".$namelink."','".$imagecont."','".$filesizecont."','".$item['slide_order']."','".$statuslink."','".$editlink.$deletelink."' ],\n";
    }
}
?>
]);

var table = new google.visualization.Table(document.getElementById('table_div'));
table.draw(data, {showRowNumber: true, allowHtml:true,width:'100%'});
}
</script>
 <div id='table_div'></div>
<script>
$(window).resize(function(){
    drawTable();
});
</script>

【问题讨论】:

  • 看起来像是按字符串而不是按数字排序。
  • 您需要将顺序从字符串更改为整数的值:data.addColumn('string', 'Order');

标签: javascript php google-visualization


【解决方案1】:

由于这一行,您的订单被排序为字符串:

data.addColumn('string', 'Order');

这需要更改以使订单按数字排序:

data.addColumn('number', 'Order');

More information

【讨论】:

    【解决方案2】:

    除了将列类型改为'number'...

    data.addColumn('number', 'Order');

    加载行数据时需要去掉列中的引号...

    来自 --> '".$item['slide_order']."'

    到 --> '.$item['slide_order'].'

    在下一行...

    echo "['".$item['id']."','".$namelink."','".$imagecont."','".$filesizecont."','.$item['slide_order'].','".$statuslink."','".$editlink.$deletelink."' ],\n";
    

    注意:建议使用ajax从php获取数据到javascript,而不是混在同一个文件中

    here is a full example,包括以 google 接受的格式构建 json

    【讨论】:

    • 很好地引用了引号
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多