easyui页面查询方法获取不到后台传值问题的解决

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>
						&nbsp;
						<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;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值