Extjs将图表添加到网格列

时间:2013-08-20 02:55:44

标签: extjs bar-chart

我在extjs中有网格视图,但我需要在每一行中显示一个条形图,显示某些值的百分比。如何在extjs中实现这一目标?也许这个图像将有助于我想要建立的东西。

enter image description here

1 个答案:

答案 0 :(得分:3)

实现此目标的一种方法是通过延迟呈现图表。基本上你这样做:

  1. 使用自定义渲染器创建网格列。
  2. 在渲染器中,输出具有已知ID的div。这个div最终会包含你的图表。
  3. 您将呼叫(使用Ext.defer)推迟到自定义函数,传入此ID(以及您的图表所需的任何信息)。此功能将呈现您的图表。
  4. 在该功能中,您创建一个图表并将其renderTo作为带有传入ID的元素。
  5. 此代码近似于您应该执行的操作。你可能想要更明智地重构它。

    Ext.create('Ext.grid.Panel', {
        height: 300,
        store: main_data,
        columns: [
            { text: 'name', dataIndex: 'name', sortable: true },
            { text: 'chart', renderer: function (value, meta, record) {
                var id = Ext.id();
                Ext.defer(function (id) {
                    var chart = Ext.create('Ext.chart.Chart', {
                        store: chart_data,
                        width: 200,
                        height: 100,
                        // other chart configuration...
                        renderTo: id
                    });
                }, 50, undefined, [id]);
                return "<div id='" + id + "'></div>";
            } }
    
        ]
    });