Javascript Google Visualization-在作为仪表板一部分的表中隐藏列,但仍然能够将底层数据用于StringFilter

Javascript Google Visualization-在作为仪表板一部分的表中隐藏列,但仍然能够将底层数据用于StringFilter,javascript,json,datatable,google-visualization,dataview,Javascript,Json,Datatable,Google Visualization,Dataview,编辑:多亏了asgallant才得以解决。答案见下文 这是我的第一个问题,我对编程相当陌生,我希望在这里找到一些答案 我正在尝试使用Google可视化API创建一个仪表板,以显示一个表和一个搜索框来搜索用户名,这很好 但是我想把名字和姓氏分为两列,这样就可以按名字或姓氏进行排序,但是在搜索框中,我希望能够搜索任何一个名字 由于StringFilter无法搜索多个列,因此我创建了另一个列,该列组合了这两个名称,并将其绑定到StringFilter。到目前为止还不错 现在我想隐藏表中结合了名字和姓氏

编辑:多亏了asgallant才得以解决。答案见下文

这是我的第一个问题,我对编程相当陌生,我希望在这里找到一些答案

我正在尝试使用Google可视化API创建一个仪表板,以显示一个表和一个搜索框来搜索用户名,这很好

但是我想把名字和姓氏分为两列,这样就可以按名字或姓氏进行排序,但是在搜索框中,我希望能够搜索任何一个名字

由于StringFilter无法搜索多个列,因此我创建了另一个列,该列组合了这两个名称,并将其绑定到StringFilter。到目前为止还不错

现在我想隐藏表中结合了名字和姓氏的列,但仍然能够使用StringFilter搜索隐藏的列

在这个网站和其他网站上搜索了很多之后,我找不到解决问题的方法。看起来这应该可以通过DataView实现,但我无法让它工作。 隐藏可以在DataView中正常工作,但一旦列被隐藏,我就会收到一个错误,指出StringFilter选项“filterColumnIndex”应该在0-4范围内,因为列5是隐藏的

我已经用dashboard.drawview尝试过了,选项:{view:[0,1,2,3,4]}; 和dashboard.drawview,选项:{data:[0,1,2,3,4]}

这可能吗?任何帮助都将不胜感激! 谢谢你抽出时间

以下是我目前的代码:

function DrawDashboard() {
            $.ajax({
                url: "/report/toverview/rest/router.php/user/",
                dataType: 'json'
            }).done(function (result) {

                //------------------------------------------------------------------//
                // Create and populate the data table.
                //------------------------------------------------------------------//
                var data = new google.visualization.DataTable();
                data.addColumn('number', 'ID');
                data.addColumn('string', 'TU-ID');
                data.addColumn('string', 'Vorname');
                data.addColumn('string', 'Nachname');
                data.addColumn('string', 'E-Mail');
                data.addColumn('string', 'FullName')
                var array = new Array();
                result = result.Records;
                //console.log(result);
                $.each(result, function(id, felder) {
                    //console.log(felder);

                    var subarray = new Array();
                    subarray.push(parseInt(felder.id));
                    subarray.push(felder.username);
                    subarray.push(felder.firstname);
                    subarray.push(felder.lastname);
                    subarray.push(felder.email);
                    subarray.push(felder.firstname + ' ' + felder.lastname);
                    array.push(subarray);
                });
                data.addRows(array);

                //------------------------------------------------------------------//
                // Create a search box to search for the user name.
                //------------------------------------------------------------------//
                var stringFilter = new google.visualization.ControlWrapper({
                    controlType: 'StringFilter',
                    containerId: 'string_filter_div_nutzer',
                    options: {
                        filterColumnIndex: 5,
                        matchType: 'any',
                        ui: {
                            label: 'Nutzer suchen:'
                        }
                    }
                });

                //------------------------------------------------------------------//
                // Create the table to display.
                //------------------------------------------------------------------//
                var table = new google.visualization.ChartWrapper({
                    chartType: 'Table',
                    containerId: 'table_div_nutzer',
                    options: {
                        showRowNumber: false,
                        page: 'enable',
                        pageSize: 25
                    }
                });

                var view = new google.visualization.DataView(data);
                //view.setColumns([0,1,2,3,4]);
                //view.hideColumns([5]);


                //------------------------------------------------------------------//
                // Create a dashboard.
                //------------------------------------------------------------------//
                var dashboard = new google.visualization.Dashboard(document.getElementById('dashboardUser'));

                //------------------------------------------------------------------//
                // Establish dependencies.
                //------------------------------------------------------------------//
                dashboard.bind([stringFilter], [table]);

                //------------------------------------------------------------------//
                // Draw the dashboard.
                //------------------------------------------------------------------//
                dashboard.draw(view);
            });
        };

您需要在表的ChartWrapper中设置视图,而不是在调用dashboard.draw时:

然后使用数据表绘制仪表板:

dashboard.draw(data);

尝试使用filterColumnLabel而不是filterColumnIndexoh my,这很有效!我以前尝试过的是将视图:{columns:[0,1,2,3,4]}放在options标记中,但它不起作用。总是小事,谢谢你!
dashboard.draw(data);