2012-04-10 75 views
0

有没有什么方法可以根据用户输入动态地生成条件。我有一个选择框'>','<','等于','以'开始','以'结尾' 。基于这个条件where子句应该被生成并且查询应该被执行。请帮助我,我需要例子。 由于我在我的表中有大约80列,我不能使用if else循环。fusiontable query for where

function querymap() 


{ 
var querypass=document.getElementById('query-pass').value.replace(/'/g, "\\'"); 
if(querypass=='hhSanitHouseType') 
    { 
    var operator=document.getElementById('operatorstring').value.replace(/'/g, "\\'"); 
    if(operator=='>') 
     { 
      var textvalue=document.getElementById("text-value").value.replace(/'/g, "\\'"); 
      layer.setQuery("SELECT 'geometry',hhSanitHouseType FROM " + tableid + " WHERE 'hhSanitHouseType' > '" + textvalue + "'"); 


     } 
    } 
    else 
    { 
    alert("false"); 
    } 
} 

回答

0

也许你可以check this example,尤其是函数generateWhere(columnName, low, high)。只需检查一个有效的输入(即运算符是'>','<','等于','以'开始','以'结尾),然后直接传递给您的查询,类似的东西

var operator = ...; 
var textvalue = ...; 
layer.setQuery("SELECT 'geometry',hhSanitHouseType FROM " + tableid + " WHERE 'hhSanitHouseType'" + operator + " '" + textvalue + "'"); 
+0

谢谢!简单和伟大的想法...... – 7783 2012-04-11 05:18:53

+0

如果假设我有三个变量,如'columnname','运营商','textvalue'。是否有可能获得列名作为变量,并将其传递给query.please电话我如何做这个。 – 7783 2012-04-11 06:49:54

+0

我不想在查询中指定hhSanitHouseType。它也应该直接从一个名为'columnname'的变量中获取。 – 7783 2012-04-11 06:51:59