【问题标题】:Showing sparkine in tree jqgrid在树 jqgrid 中显示 sparkine
【发布时间】:2017-05-19 06:56:05
【问题描述】:

我需要在 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);}
                });
            } 

我使用控制台检查了一切正常,只有图表没有显示。

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

【问题讨论】:

    标签: javascript jquery jqgrid sparklines


    【解决方案1】:

    我想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) {}
        }
    }
    

    【讨论】:

    • 很抱歉没有一次添加整个代码。我只在 loadComplete 中调用它。我也添加了新代码。我会检查您提供的其他解决方案
    • @shv22:无法根据代码片段分析问题。目前尚不清楚 TreeGrid 和本地数据是否存在相同的问题,或者您按需加载节点。目前还不清楚您使用哪个版本的 jqGrid,哪个 jQuery、jQuery UI/Bootstrap、sparkline,......最好准备演示,它可以重现问题。可以看到问题,进行调试和分析。
    • 嗨,我在这里创建了一个演示 jsfiddle.net/adishri22/98yxbjgc,但遇到了同样的问题
    • @shv22:小评论。我想你不知道,搜索引擎(甚至谷歌)使用投票计数器来排序搜索结果。这意味着如果答案/问题的投票率低,则很难通过搜索找到信息。您每天有权投票大约 30 个答案(请参阅 here),但在 1 年零 9 个月期间,您只投票了 27 次。如果您想帮助其他人查找信息,请使用您的权利并对您认为有帮助的任何有关 stackoverflow 的信息进行投票
    • 从现在开始我会关注这个
    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多