Handsontable添加超链接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Handsontable添加超链接相关的知识,希望对你有一定的参考价值。

  本文在上文的基础上,返回的数据中多了一个link超链接跳转的字段,,需要在Handsontable中显示超链接。

  

<!DOCTYPE html>
<html>
<head>
    <title>handsontable demo</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="handsontable/htstyle.css">
    <link rel="stylesheet" href="handsontable/htstyle-custom.css">
    <script src="handsontable/jquery-1.12.1.js"></script>
    <script src="handsontable/handsontable.full.js"></script>
</head>
<body>
    <div id="example"></div>

    <script>
        var data = [
            { riqi: \'2017-01\', address: \'北京\', goods: \'冰箱\', price: \'3399\', sales: 530, del: \'\', link: "<a href=\'http://www.baidu.com\' target=\'_blank\' style=\'cursor:pointer;\'>链接</a>" },
            { riqi: \'2017-01\', address: \'天津\', goods: \'空调\', price: \'4299\', sales: 522, del: \'\', link: "<a href=\'handsontable_1.htm\' target=\'_blank\' style=\'cursor:pointer;\'>链接</a>" },
            { riqi: \'2017-01\', address: \'上海\', goods: \'洗衣机\', price: \'1299\', sales: 544, del: \'\', link: "<a href=\'http://www.baidu.com\' target=\'_blank\' style=\'cursor:pointer;\'>链接</a>" },
            { riqi: \'2017-01\', address: \'广州\', goods: \'彩电\', price: \'4599\', sales: 562, del: \'\', link: "<a href=\'handsontable_1.htm\' target=\'_blank\' style=\'cursor:pointer;\'>链接</a>" },
            { riqi: \'2017-01\', address: \'深圳\', goods: \'热水器\', price: \'1099\', sales: 430, del: \'\', link: "<a href=\'http://www.baidu.com\' target=\'_blank\' style=\'cursor:pointer;\'>链接</a>" },
            { riqi: \'2017-02\', address: \'重庆\', goods: \'笔记本电脑\', price: \'4999\', sales: 666, del: \'\', link: "<a href=\'handsontable_1.htm\' target=\'_blank\' style=\'cursor:pointer;\'>链接</a>" },
            { riqi: \'2017-02\', address: \'厦门\', goods: \'油烟机\', price: \'2899\', sales: 438, del: \'\', link: "<a href=\'http://www.baidu.com\' target=\'_blank\' style=\'cursor:pointer;\'>链接</a>" },
            { riqi: \'2017-02\', address: \'青岛\', goods: \'饮水机\', price: \'899\', sales: 620, del: \'\', link: "<a href=\'handsontable_1.htm\' target=\'_blank\' style=\'cursor:pointer;\'>链接</a>" },
            { riqi: \'2017-02\', address: \'大连\', goods: \'手机\', price: \'1999\', sales: 500, del: \'\', link: "<a href=\'http://www.baidu.com\' target=\'_blank\' style=\'cursor:pointer;\'>链接</a>" }
        ];

        function negativeValueRenderer(instance, td, row, col, prop, value, cellProperties) {
            Handsontable.renderers.TextRenderer.apply(this, arguments);
            if (prop == \'address\') {
                td.style.color = \'#32CD32\';
            }
            else if (prop == \'price\') {
                //格式化价格数据
                td.innerText = value != null ? numbro(value).format(\'0.00\') : "";
            }
            else if (prop == \'sales\') {
                //右对齐
                td.style.textAlign = \'right\';
                td.innerText = value != null ? numbro(value).format(\'0,0.00\') : "";
            }
            else if (prop == \'del\') {
                //添加自定义的图片,并给图片的chick添加事件
                var escaped = Handsontable.helper.stringify(value),
                  imgdel;

                imgdel = document.createElement(\'IMG\');
                imgdel.src = "handsontable/remove.png";
                imgdel.width = 20;
                imgdel.name = escaped;
                imgdel.style = \'cursor:pointer;\';//鼠标移上去变手型
                Handsontable.dom.addEvent(imgdel, \'click\', function (event) {
                    hot.alter("remove_row", row);//删除当前行
                });

                Handsontable.dom.empty(td);
                td.appendChild(imgdel);
                td.style.textAlign = \'center\';
                return td;
            }
            else if (prop == \'link\') {
                td.innerHTML = value;//字符串转化成HTML的写法
            }
        }
        Handsontable.renderers.registerRenderer(\'negativeValueRenderer\', negativeValueRenderer);

        var hot = new Handsontable(document.getElementById(\'example\'), {
            data: data,
            colHeaders: [\'操作\', \'日期\', \'地点\', \'商品\', \'单价\', \'销量\',\'跳转\'], // 使用自定义列头
            rowHeaders: true,
            colWidths: 150, // 设置所有列宽为150像素
            filters: true,
            columnSorting: true,
            sortIndicator: true,
            autoColumnSize: true,
            manualColumnResize: true,
            undo: true,
            redo: true,
            wordWrap: true,
            copyable: true,
            mergeCells: false,
            manualRowResize: true,
            manualRowMove: true,
            manualColumnMove: false,
            renderAllRows: true,
            allowInsertRow: true,
            allowInsertColumn: false,
            fixedColumnsLeft: 1,
            columns: [{
                data: \'del\',
                type: \'text\'
            }, {
                data: \'riqi\',
                type: \'date\',
                dateFormat: \'YYYY-MM-DD\'
            }, {
                data: \'address\',
                type: \'text\'
            }, {
                data: \'goods\',
                type: \'text\'
            }, {
                data: \'price\',
                type: \'numeric\'
            }, {
                data: \'sales\',
                type: \'numeric\'
            }, {
                data: \'link\',
                type: \'text\'
            }],
            contextMenu: [\'row_above\', \'row_below\', \'---------\', \'remove_row\', \'---------\', \'undo\', \'redo\', \'---------\', \'make_read_only\', \'---------\', \'alignment\'],
            dropdownMenu: [\'filter_by_condition\', \'filter_by_value\', \'filter_action_bar\'],
            cells: function (row, col, prop) {
                var cellProperties = {};
                cellProperties.renderer = "negativeValueRenderer";
                return cellProperties;
            },
        });
    </script>
</body>
</html>

 

 

  需要注意的是,不管link中的值是前台拼接还是后台处理好返回的,只是一个超链接格式的字符串,如果没有td.innerHTML = 链接字符串;则显示的仍然是一个字符串而不是超链接。

 

By QJL

 

以上是关于Handsontable添加超链接的主要内容,如果未能解决你的问题,请参考以下文章

Handsontable - afterChangeEvent 如何检测何时删除或添加整行

HTML代码片段

HTML代码片段

Handsontable中的反向列和行标题

在 JSP 中的 <% %> 代码片段中添加链接

将列动态添加到handsontable