1.先来看后台代码:
@RequestMapping("/toChooseDoc")
public ModelAndView toChooseDutyDoc(HttpServletRequest request,HttpServletResponse respones)
{
String account=request.getParameter("account");
String archiveId=request.getParameter("archiveId");
ModelAndView mv=new ModelAndView();
mv.addObject("account", account);
mv.addObject("archiveId", archiveId);
mv.setViewName("doctor/userManage/chooseDoc");
return mv;
}
以上代码向doctor/userManage/chooseDoc这个页面传递了archiveId的值,下面是前端页面代码:
<body style="margin: 0px;padding: 2px;">
<div>
<form id="filterForm">
<table class="table">
<tr>
<td width="20%" class="td_title">姓名:</td>
<td>
<input id="userName" name="name" maxlength="100" />
</td>
<td width="100">
<a class="easyui-linkbutton" href="javascript:query()">查询</a>
<a class="easyui-linkbutton" href="javascript:clear()">重置</a>
</td>
</tr>
</table>
</form>
</div>
<div style="text-align: center;padding-top: 5px;">
<table id="doctorBox" class="easyui-datagrid"></table>
</div>
</body>
上面主要涉及到datagrid的定义和一个查询方法query() ,下面是datagrid的数据初始化和query()方法的JS代码:
<script type="text/javascript">
//初始化datagrid的数据
var grid;
$(function(){
grid = $("#doctorBox").datagrid({
loadMsg : "数据加载中,请稍候...",
width : "auto",
height : 170,
animate : false,
striped : true,
singleSelect : true,
url : "<%=basePath%>docPage/getDoctors?account=${account}&archiveId=${archiveId}",
queryParams:{pageNumber:1,pageSize:10}, //查询参数
pagination : true,
idField : "patId",
rownumbers : true,
fitColumns : true,
frozenColumns: [[{
field: "ck",
checkbox: true
}]],
columns: [[{
field: "name",
title: "姓名",
width: 80,
align: "center"
}, {
field: "userId",
title: "身份证号码",
width: 130,
align: "center"
}, {
field: "sex",
title: "性别",
width: 70,
align: "center",formatter:function(v){
var sex = "";
if(v==1){
sex = "男";
}else if(v==2){
sex = "女";
}else {
sex = "未知性别";
}
return sex;
}
}]],
onSortColumn : function(sort, order) {
},
toolbar : "#toolbar"
});
var p = grid.datagrid("getPager");
if (p) {
$(p).pagination({
pageNumber : 1,
showPageList : false
});
}
});
//点击查询按钮执行的方法
function query(){
var name=$("#userName").val();
$('#doctorBox').datagrid("getPager").pagination({pageNumber : 1});
var option = $('#doctorBox').datagrid("options");
option.pageNumber = 1;
option.pageSize=10;
option.url = "<%=basePath%>docPage/getDoctors?archiveId=${archiveId}&doctorName="+name;
var queryParams = option.queryParams;
queryParams.name = name;
//queryParams.archiveId = ${archiveId};
reloadGrid();
}
上面JS代码有两处涉及到后台传值archiveId的引用,一处是初始化datagrid时的url,另一处则是query()方法的url,虽然是同一个页面,但初始化datagrid时的url可以拿到archiveId的值,而query()方法的url却拿不到,原因想不通。不过解决办法却想到了,将后台传过来的值,存放到隐藏域中,然后在JS中再调用隐藏域中的值即可。如下:
<td width="20%" class="td_title">姓名:</td>
<td>
<input id="userName" name="name" maxlength="100" />
<!--添加一个隐藏域接收后台传过来的值-->
<input type="hidden" id="archiveId" name="archiveId" value="${archiveId}" />
</td>
</td>
var archiveId=$("#archiveId").val();
option.url = "<%=basePath%>docPage/getDoctors?archiveId="+archiveId+"&doctorName="+name;