估计这是最简单的一种方法了
<script language="javascript">
setTimeout("$('select#menuLevel').val('${menuLevel}')", 100);</script>
<td style="width:150px;height:10%;">
<label>测站编码</label>
<select id="stcd" name="stcd"
value="${stcd}"> / /value="${stcd}"这个在数据回显的时候非常重要,特别是ajax这样的
<option value="" >请选择</option>
<c:forEach items="${sessionScope.rainstations}" var="item2">
<option value="${item2.stcd}"> ${item2.stcd}</option>
</c:forEach>
</select>
</td>
jsp部分代码:
<td style="width: 100%;height: 10%;">
<form id="queryForm">
<table style="width:98%;color:#000;margin-left: 10px;">
<tr>
<td style="width:150px;height:10%;">
<label>测站编码</label>
<select id="stcd" name="stcd" value="${stcd}">
<option value="" >请选择</option>
<c:forEach items="${sessionScope.rainstations}" var="item2">
<option value="${item2.stcd}"> ${item2.stcd}</option>
</c:forEach>
</select>
</td>
<td style="display:show();">
<label>测站编码:</label>
<input type="text" id="stcd2" name="stcd2" value="${stcd2}"/>
</td>
<td style="width:150px;height:10%;color:#000;padding-left: 10px;padding-bottom: 10px;">
<label>开始时间:</label>
<input type="text" id="tmbegin" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="Wdate" name="tmbegin" value="${tmbegin}"/>
</td>
<td style="width:150px;height:10%;color:#000;padding-left: 10px;padding-bottom: 10px;">
<label>结束时间:</label>
<input type="text" id="tmend" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="Wdate" name="tmend" value="${tmend}"/>
</td>
<td style="width: 5%;height:10%;">
<!--<div class="btn query_btn" onclick="javaScript:$('#queryForm').submit();"/> -->
<div class="btn query_btn" onclick="submitall();"/>
</td>
<td align="left" style="width: 10%">
<c:forEach items="${operate}" var="oper"><c:if test="${oper.operateType=='ADD'}"><div class="btn add_btn" model="add" title="添加用户" /></c:if></c:forEach>
</td>
<td style="width:5%;height:10%;color:#000;"> <div class="btn add_btnf" model="add1" title="雨量过程线图表" onclick="getrainchart();"/></td>
</tr>
</table>
</form>
</td>
点击查询同时执行controller里两个方法,下面显示的表单直接执行queryrain方法,上面的图表通过ajax执行rainmnpic方法,这里面涉及到一个问题,那就是点击查询时候的效果和刚开始点击雨量过程线时的结果是一样的,如果没有加value="${}"这项,测站编码始终是先加载到选择,这样刚开始加载时时加载全部数据的,所以当选择测站编码不为空时,下面的表单加载具体的测站编码的数据,而上面的图表加载的是全部的数据。但是加上value="${}"这项后,表单和图表都是同时加载具体选择的测站编码的数据的。故问题就是这样解决的。
controller里:
// 雨情数据查询
@RequestMapping(value = "queryrain")
public ModelAndView reservoirservice(
@RequestParam(value = "stcd", required = false, defaultValue = "") String stcd,
@RequestParam(value = "pageIndex", required = false, defaultValue = "0") Integer pageIndex,
@RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize,
HttpServletRequest request, HttpServletResponse response) {
HashMap queryParams = new HashMap();
PageInfo pageInfo = new PageInfo();
queryParams.put("stcd", stcd);
queryParams.put("pageInfo", pageInfo);
int totalRow = queryrainService.queryRaincount(queryParams);
pageInfo.setPageSize(5);
pageInfo.setTotalRow(totalRow);
pageInfo.setTotalPageSize((int)Math.ceil(totalRow*1.0/pageInfo.getPageSize()));
pageInfo.setStartPageIndex(pageIndex);
pageInfo.setResult(queryrainService.queryRain(queryParams));
PageUtils.set(pageInfo, "queryrain.do", queryParams);
request.getSession().setAttribute("rainstations", stationservice.queryStation(null));
return new ModelAndView("queryrain", queryParams);
}
// 加载雨量数据图表
@RequestMapping(value = "rainmnpic")
public void rainmnpic(//@RequestParam(value = "stcd", required = false, defaultValue = "") String stcd,
HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> queryParams = new HashMap<String, Object>();
String stcd=request.getParameter("stcd");
JSONObject json = new JSONObject();
if(stcd.equals("quanbu")|isNull(stcd)){
json.put("data", queryrainService.queryRain(null));
}else{
queryParams.put("stcd", stcd);
json.put("data", queryrainService.queryRain(queryParams));
}
System.out.println("json:"+json);
try {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
json.put("status", "1");
json.put("info", "查询成功!");
out.write(json.toString());
} catch (IOException e) {
logger.error(e.getLocalizedMessage());
}
return ;
}
js里面的部分代码:
function getrainchart2(){//把图形函数放在ajax函数里,使用它的获取值
var data2=new Array() ;var data3 = new Array();var data1 =new Array()
var data11 =new Array() ;var data22 =new Array() ;//把ajax里定义的变量赋给全局变量(ajax不好写全局变量)
var data33 = new Array();var time=new Array();
var times = new Array();
var year=new Array();var month=new Array();var date=new Array();var hours=new Array();var minutes=new Array();var seconds=new Array();var nanos=new Array();
// var stcd1=$(btn).parent().parent().children("td").eq(0).find("select").val();
// var tmbegin1=$(btn).parent().parent().children("td").eq(1).find("input").val();
// var tmend1=$(btn).parent().parent().children("td").eq(2).find("input").val();
var stcd=$("#stcd").val();
var tmbegin=$("#tmbegin").val();
var tmend=$("#tmend").val();
var data = {
stcd:stcd,
tmbegin:tmbegin,
tmend:tmend
};
var itemId=$("#stationType").val();
var url = "";var name="";var kk="";
url = "rainmnpic.do";
name="雨量过程线(单位:mm)";
kk="雨量数据";
$.ajax({
type : "post",
data:data,
url : url,
async: false,
success : function(msg){
var allchart = JSON.parse(msg).data;
// var mm =new Array();
//mm[0]=allchart[0].tm.month+1;
for (var i = 0; i < allchart.length; i++) {
//mm[0]=allchart[0].tm.month+1;
// alert("2"+allchart[0].tm.year-100+"-"+"0"+mm[0]+"-"+allchart[0].tm.date);
year[i] = "2"+allchart[i].tm.year-100;
month[i] = allchart[i].tm.month + 1 < 10 ? "0" + (allchart[i].tm.month + 1) : allchart[i].tm.month + 1;
date[i] = allchart[i].tm.date < 10 ? "0" + (allchart[i].tm.date) : allchart[i].tm.date;
hours[i] = allchart[i].tm.hours < 10 ? "0" + (allchart[i].tm.hours) : allchart[i].tm.hours;
minutes[i] = allchart[i].tm.minutes < 10 ? "0" + (allchart[i].tm.minutes) : allchart[i].tm.minutes;
seconds[i] = allchart[i].tm.seconds < 10 ? "0" + (allchart[i].tm.seconds) : allchart[i].tm.seconds;
// alert(year[0]+"-"+month[0]+"-"+date[0]+" "+hours[0]+":"+minutes[0]+":"+seconds[0]);
times[i]=year[i]+"-"+month[i]+"-"+date[i]+" "+hours[i]+":"+minutes[i]+":"+seconds[i];
// alert("时间1:"+times[0]);
data1.push(allchart[i].stcd);
data22[i]=(allchart[i].rain);
// data33[i].push(year[i]+"-"+month[i]+"-"+date[i]+" "+ hours[i]+":"+minutes[i]+":"+second[i]);
//data33[i].push(year[i]+"-"+month[i]+"-"+date[i]);
// data33[i].push(year[i]);
data2[i]=data22[i] ;
data3[i]=data33[i]
}
}
});
// 路径配置
require.config({
paths : {
echarts : './scripts/echarts-2.2.7/build/dist'
}
});
require([ 'echarts', 'echarts/chart/bar' ,'echarts/chart/line' ], function(ec) {
var myChart = ec.init(document.getElementById('mainss2'));
var option = {
title : {
text: name,
textStyle:{
fontSize: 18,
fontWeight: 'bolder',
color: '#0A8ECE'
}
},
tooltip : {
show : true
},
legend : {
data : [ kk ],
itemWidth : 20
},
dataZoom : {
//y:50,
handleSize:4,
show : true,
realtime : true,
start : 0,
end : 100
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {show: true, type: ['line', 'bar']},
restore : {show: true},
saveAsImage : {show: true}
}
},
calculable : true,
xAxis : [ {
type : 'category',
data :times
} ,{
type : 'category',
data :data1,
}],
yAxis : [ {name:'',
type : 'value'
} ],
series : [ {
barMinHeight:10,
barMaxWidth:40,
"name" : kk,
"type" : "bar",
"data":data2,
markPoint : {
data : [
{type : 'max', name: '最大值'},
{type : 'min', name: '最小值'},
// function(){
// int i=0;var res=new Array();int k=2;
// for( i=0;i<data2.size();i++){
// res[i]= {name:data1[i],value: data2[i], xAxis: times[i], yAxis:data2[i]};
// for( k=0;k<data2.size();k++){
// res[k]=res[k-1]+res[k-2]+",";
// }
// }
// return res;
// }
]
},
markLine : {
data : [
{type : 'average', name: '平均值'}
]
}
} ]
};
myChart.setOption(option);
});
}
/**
* 绑定事件
*
* @return
*/
function bindChangeEvent() {
$("#stcd").live("change", function() {
var stcd = $(this).val();
});
}
function submitall(){
$("#queryForm").submit();
getrainchart2();
}
数据回显,就是把查询条件先给controller然后再返回到jsp里:
jsp:
<form id="queryForm" method="post">
<table style="width:98%;color:#000;margin-left: 10px;">
<tr>
<td style="width:150px;height:10%;">
<label>测站编码</label>
<select id="stcd" name="stcd" value="${stcd}">
<option value="" selected="selected">请选择</option>
<c:forEach items="${stationstcd}" var="item2">
<option value="${item2.stcd}">${item2.stnm}(${item2.stcd})</option>
</c:forEach>
</select>
</td>
<td style="width:150px;height:10%;color:#000;padding-left: 10px;padding-bottom: 10px;">
<label>开始时间:</label>
<input type="text" id="tmbegin" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="Wdate" name="tmbegin"
value="${tmbegin}"/>
</td>
<td style="width:150px;height:10%;color:#000;padding-left: 10px;padding-bottom: 10px;">
<label>结束时间:</label>
<input type="text" id="tmend" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="Wdate" name="tmend"
value="${tmend}"/>
</td>
<td style="width: 5%;height:10%;">
<div class="btn query_btn" onclick="javaScript:$('#queryForm').submit();"/>
<!-- <div class="btn query_btn" onclick="submitall();"/>-->
</td>
<td align="left" style="width: 10%">
<c:forEach items="${operate}" var="oper"><c:if test="${oper.operateType=='ADD'}"><div class="btn add_btn" model="add" title="添加用户" /></c:if></c:forEach>
</td>
<td style="width:5%;height:10%;color:#000;"> <div class="btn add_btnf" model="add1" title="雨量过程线图表" onclick="getrainchart();"/></td>
</tr>
</table>
</form>
contorller:
if(!isNull(tmbegin1)){
queryParams.put("tmbegin", tmbegin1);
}else{
queryParams.put("tmbegin", nowtime1);
}
if (!isNull(tmend1)){
queryParams.put("tmend", tmend1);
}else{
queryParams.put("tmend", nowtime2);
}