[英]Resetting the selected values in Google visualization category picker control
[英]building where clause based on google visualization category picker control
根據此鏈接 ,我們可以執行基於Google可視化類別選擇器控件的功能。 現在,我正在嘗試根據以下給出的三個控件構建相同類型的where子句。
var whereClause1;
var control1, control2, control3;
function drawVisualization() {
// etc.
control1 = // etc...
control2 = // etc...
control3 = // etc...
// Register to hear state changes.
google.visualization.events.addListener(control1, 'statechange', foo1);
google.visualization.events.addListener(control2, 'statechange', foo2);
google.visualization.events.addListener(control3, 'statechange', foo3);
// etc.
}
function foo1() {
var whereClauses = [];
if (control1.getState().selectedValues == '') {
whereClauses.push("Something")
}
else if (control1) {
whereClauses.push("Something1 = '" +control1.getState().selectedValues+ "'")
}
whereClause1 = whereClauses;
dothis();
}
function foo2() {
var whereClauses = [];
if (control2.getState().selectedValues == '') {
whereClauses.push("Something1 = '" +control1.getState().selectedValues+ "'")
}
else if (control2) {
whereClauses.push("Something2 = '" +control2.getState().selectedValues+ "'")
}
whereClause1 = whereClauses;
dothis();
}
function foo3() {
var whereClauses = [];
if (control3.getState().selectedValues == '') {
whereClauses.push("Something2 = '" +control2.getState().selectedValues+ "'")
}
else if (control3) {
whereClauses.push("Something3 = '" +control3.getState().selectedValues+ "'")
}
whereClause1 = whereClauses;
dothis();
}
function dothis() {
whereClause += " AND " + whereClause1;
}
如何使用某些循環foo
三個功能合並為一個功能foo
?
在示例中,當我在第1列中選擇“ A”時,where子句應采用值column0 = 'Home' AND column1 = 'A'
而當我在第2列中選擇'bar'時,where子句應采用值column0 = 'Home' AND column1 = 'A' AND column2 = 'bar'
並且如果我分別在column2和column3中選擇'bar'和'200',則where子句應采用值column0 = 'Home' AND column2 = 'bar' AND column3 = '200'
,依此類推。
也需要相反的順序。 也就是說,當我在第2列中選擇“選擇一個值”時,where子句應采用僅在第1列中設置的值。 我嘗試了以下方法:
function foo() {
var whereClauses = [];
if (control1.getState().selectedValues == '') { whereClauses.push("") }
if (control1) { whereClauses.push("Column1 = '" +control1.getState().selectedValues+ "'") }
if (control2.getState().selectedValues == '') { whereClauses.push("Column1 = '" +control1.getState().selectedValues+ "'") }
if (control2) { whereClauses.push("Column2 = '" +control2.getState().selectedValues+ "'") }
if (control3.getState().selectedValues == '') { whereClauses.push("Column2 = '" +control2.getState().selectedValues+ "'") }
if (control3) { whereClauses.push("Column3 = '" +control3.getState().selectedValues+ "'") }
whereClause1 = whereClauses.join(" AND ");
dothis();
}
但是沒用。
如果我正確理解了您的要求,則此功能應執行您想要的操作:
function getWhereClause () {
var selectedValues1 = control1.getState().selectedValues;
var selectedValues2 = control2.getState().selectedValues;
var selectedValues3 = control3.getState().selectedValues;
var whereClauses = ["column0 = 'Home'"];
if (selectedValues1.length) {
whereClauses.push("Column1 = '" + selectedValues1[0] + "'");
}
if (selectedValues2.length) {
whereClauses.push("Column2 = '" + selectedValues2[0] + "'");
}
if (selectedValues3.length) {
whereClauses.push("Column3 = '" + selectedValues3[0] + "'");
}
var whereClause = whereClauses.join(' AND ');
// do something with whereClause
alert(whereClause);
}
參見此處的工作示例: http : //jsfiddle.net/asgallant/zrjnh/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.