在DataTable上应用具有重复值的DataView

时间:2014-03-03 11:21:00

标签: javascript jquery google-visualization

我有一个表,其中一个列有多个重复项。我想一次过滤列上具有相同值的所有行。我尝试使用getFormattedValue()方法获取列的值,然后我应用了DataView的常用代码。当我单击该行时,除了所选行之外,它将消除表中的所有行,并且不会过滤列上具有重复值的所有行。到目前为止,这是我的代码:

var table = new google.visualization.Table(document.getElementById('chart_div'));
var items = " ";
table.draw(dataTable, {width: 1000, height: 300});
google.visualization.events.addListener(table, 'select',
    function(event) {
        var selection = table.getSelection();
        var view = new google.visualization.DataView(dataTable);
        for(i = 0; i < row.length; i++){
            var items == dataTable.getFormattedValue(i, i);
            if(items = "anti-social-behaviour"){
                console.log("if statement");
                view.setRows([selection[i].row]);
                table.draw(view, []);
            }
        }
    });

如果有人能够发现问题,我们将非常感激。谢谢。

1 个答案:

答案 0 :(得分:1)

我发现此代码存在许多问题。首先,row来自哪一行?

for(i = 0; i < row.length; i++){

其次,您正在测试数据集中(i, i)的格式化值,该值检查(0, 0),然后(1, 1),然后检查(2, 2)等,而不是检查整行或列。第三,在这些方面:

view.setRows([selection[i].row]);
table.draw(view, []);

您要将视图中使用的行设置为rowi元素的selection属性(可能是undefined,因为有i没有什么可以阻止selection的增长超过setRows的长度。 google.visualization.events.addListener(table, 'select', function(event) { var selection = table.getSelection(); if (selection.length) { var filterView = new google.visualization.DataView(dataTable); filterView.setColumns([{ type: 'string', sourceColumn: 1, // set this column to be whatever column you want to check for duplicate values calc: 'stringify' }]); var value = filterView.getValue(selection[0].row, 0); var rows = filterView.getFilteredRows([{column: 0, value: value}]); var view = new google.visualization.DataView(dataTable); view.setRows(rows); table.draw(view, []); } }); 方法设置整个行集用于视图,因此每次调用时,都要将行设置为(最多)1行,然后绘制带有视图的表,这就是为什么你在表中只看到一行。

如果要过滤表格以仅显示值与所选行中的值匹配的行,则需要使用以下内容:

{{1}}