2013-08-19 53 views
2

是否存在“内置”的方式来仅使用可见行从仪表板表创建数据视图?我想知道在我编写一个不必要的冗长的替代方案之前!Google可视化:从已过滤的表创建数据视图

编辑:

我错过了在参考文档,但它并不能完全解决问题,因为你仍然必须做一些jiggery pokery得到有源滤波器的上划线并通过状态他们到getFilteredRows()方法。

您可以使用getFilteredRows()方法,该方法“返回与所有给定过滤器匹配的行的行索引。索引按升序返回。此方法的输出可用作DataView.setRows的输入()”

https://developers.google.com/chart/interactive/docs/reference#DataView

+0

你可以尝试寻找和使用第三方插件,你不能只依靠内置的东西。 – hexicle

+0

@Raindrop有何建议? – doovers

+0

对不起,但我不知道。我只是一个初学者。就我个人而言,我最近从Google Visualization切换到Flot。 – hexicle

回答

1

对于任何人谁可能会发现这个有用的好处,这里是我如何解决我的问题:

首先,从仪表板创建控制状态的数组

control_states = [ctrl1.getState(),ctrl2.getState(),ctrl3.getState()]; 

接下来,创建所有选择为每个阵列控制

var filteredrows = [ ]; 
var cnt = 0; 
for (var i = 0; i < control_states.length; i++) { 
    var picker_state = control_states[i] 
    for (var j = 0; j < picker_state.selectedValues.length; j++) { 
    filteredrows[cnt] = [ ]; 
    filteredrows[cnt]["column"] = i; 
    filteredrows[cnt]["value"] = picker_state.selectedValues[j]; 
    cnt += 1; 
    }; 
}; 

创建新的数据视图和filteredrows数组传递给setRows方法:

var filterdata = new google.visualization.DataView(data) 
filterdata.setRows(
    filterdata.getFilteredRows(filteredrows) 
); 
2

的ChartWrapper对象需要包裹表使用控制板有一个当‘查看’参数可用于定义要用于该图表的数据视图:

var table = new google.visualization.ChartWrapper({ 
    chartType: 'Table', 
    containerId: 'myTableDiv', 
    options: { 
     // table options 
    }, 
    view: { 
     columns: [/* columns used for the view */] 
    } 
});