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