【应用场景】
报表控件的数据需要做特殊的过滤,例如:日历控件选定了某个日期,趋势图只想查询1号-选定日期的值, 而不是指定日期的值,可以使用查询脚本
【实现原理】
在控件向服务器请求数据之前,通过脚本动态修改查询参数,实现特殊的查询需求
【示例】
Code Block | ||
---|---|---|
| ||
//浏览器控制台打印出query,这个变量是控件提交给服务器的查询参数,可以通过修改query里面的条件实现特殊查询
console.log(query);
var endDateStr = null;
var endDateIndex = -1;
//找出过滤条件中的日期
for(var i = 0; i < query.filterKeys.length; i++){
if(query.filterKeys[i] === "日期"){ //这里请将日期修改为相应的字段名
endDateStr = query.filterValues[i];
endDateIndex = i;
break;
}
}
//将原来的 日期='2019-10-xx' 删除,增加 日期<='2019-10-xx'和日期>='2019-10-01'
if(endDateStr != null){
query.filterKeys.splice(endDateIndex, 1);
query.filterValues.splice(endDateIndex, 1);
var fromDateStr = endDateStr.substr(0,7)+"-01"; //将 2019-10截取出来,拼装成 2019-10-01
console.log("fromDateStr: "+fromDateStr);
query.filterKeys.push("日期"); //这里请将日期修改为相应的字段名
query.filterValues.push(" >='"+fromDateStr+"' ");
query.filterKeys.push("日期"); //这里请将日期修改为相应的字段名
query.filterValues.push(" <='"+endDateStr+"' ");
}
//再次打印query,在控制台看看是否修改成功,是否与其他字段冲突
//最后生成的sql就是 日期 >= '2019-10-01' and 日期 <= '2019-10-xx'
console.log(query); |