【应用场景】
报表控件的数据需要做特殊的过滤,例如:日历控件选定了某个日期,趋势图只想查询1号-选定日期的值, 而不是指定日期的值,可以使用查询脚本
【实现原理】
在控件向服务器请求数据之前,通过脚本动态修改查询参数,实现特殊的查询需求
【示例】
//浏览器控制台打印出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);