javascript - 在树 jqgrid 中显示 Sparkine

标签 javascript jquery jqgrid sparklines

我需要在 jqgrid 内显示折线图。所以,我遇到了这个question

在这个问题中,我们展示了如何轻松地在 jqgrid 单元格中显示迷你图。我用了同样的东西并且它有效但是 问题是我的是树状网格。因此,这里只有父节点正在填充,而不是子节点。

这是我的代码

 loadComplete: function () {
                var ts = this;
                if (ts.p.reccount === 0) {
                    $(this).hide();
                    emptyMsgDiv.show();
                } else {
                    $(this).show();
                    emptyMsgDiv.hide();
                }
                var index = getColumnIndexByName('col_chart');
                $('tr.jqgrow td:nth-child('+(index+1)+')').each(function(index, value) {
                var ar;
                    try {
                        var chartData = [];
                        var height;
                        height = $(this.innerHTML.split(','));
                        for(i=0;i<height.length;i++){
                            chartData.push(height[i]);

                        }

                        ar = chartData;
                        var largest = Math.max.apply(Math, ar);
                        if (ar && ar.length>0) {
                            console.log(ar);
                        $(this).sparkline(ar,{
                        type: 'line',

                        tooltipFormat: "{{y:value}}",});
                        }
                    } catch(e) { alert (true);}
                });
            } 

我使用控制台检查一切都按预期正常工作,只有图表未显示。

谁能告诉我这里出了什么问题吗?

最佳答案

我认为 sparkline 不适用于隐藏节点。我建议您在 treeGridAfterExpandRow 回调或 jqGridTreeGridAfterExpandNode 事件处理程序中调用 sparkline 。如果从服务器动态加载节点,则可能存在另一个可能的问题。在这种情况下,您应该在 loadComplete 回调或 jqGridLoadComplete 事件中包含对 sparkline 的调用。

更新:对演示的修改 http://jsfiddle.net/adishri22/98yxbjgc/可能如下:https://jsfiddle.net/OlegKi/98yxbjgc/3/

我使用了以下treeGridAfterExpandRow代码:

treeGridAfterExpandRow: function (options) {
    var $self = $(this), p = $self.jqGrid("getGridParam"),
        iCol = p.iColByName.sl, item, i, tr, $td, rowid,
        idName = p.localReader.id,
        children = $self.jqGrid("getNodeChildren", options.item);
    for (i = 0; i < children.length; i++) {
        item = children[i];
        rowid = item[idName];
        tr = $self.jqGrid("getGridRowById", rowid);
        $td = $.jgrid.getDataFieldOfCell.call(this, tr, iCol);
        try {
            $td.sparkline($.parseJSON(item.sl));
        } catch(e) {}
    }
}

关于javascript - 在树 jqgrid 中显示 Sparkine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44063386/

相关文章:

javascript - NodeJS 循环优化

javascript - ReactJS - 使用 iframe 静默更新 token

javascript - 弹出强制浏览器打开 Ajax

javascript - Google reCaptcha 2 TypeError : a is null after calling grecaptcha. 重置

jquery - 读取 jqgrid 中可编辑的输入值

javascript - 拆分字符串中的数字和字母

javascript - 从 Greasemonkey 或 Tampermonkey 脚本运行 onchange 函数?

javascript - Cordova JQuery ajax 无法正常工作

重新加载jqgrid的Java代码

javascript - jqGrid:在内联编辑中提交之前确认对话框?