您现在的位置:首页 >> 前端 >> 内容

jqgrid实现多行数据弹出框添加修改查询操作

时间:2016/8/10 9:37:16 点击:

  核心提示:span style=font-family: Arial, Helvetica, sans-serif;%@ page language=javaimport=java.util.*contentT...
<span style="font-family: Arial, Helvetica, sans-serif;"><%@ page language="java"  import="java.util.*"  contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%></span>
  <%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
			
  <title>药品图片添加</title>
  <link href="../../style/css.css" rel="stylesheet" />
  <link rel="stylesheet" type="text/css" media="screen" href="/resources/style/jquery-ui.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="/resources/style/ui.multiselect.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="/resources/style/ui.jqgrid.css" />
  <link rel="stylesheet" type="text/css" href="/resources/style/jquery-ui-timepicker-addon.css" />
	
  <script type="text/javascript" src="/resources/scripts/jquery-1.9.0.js"></script>
  <script type="text/javascript" src="/resources/scripts/jquery-ui.js"></script>
  <script type="text/javascript" src="/resources/scripts/ui.multiselect.js"></script>
  <script type="text/javascript" src="/resources/scripts/jquery.jqGrid.src.js"></script>
  <script type="text/javascript" src="/resources/scripts/i18n/grid.locale-cn.js"></script>
  <script type="text/javascript" src="/resources/scripts/fufang.grid.src.js"></script>
  <script type="text/javascript" src="/resources/scripts/jquery.ui.datepicker-zh-CN.js"></script>
  <script type="text/javascript" src="../../scripts/jquery-ui-timepicker-addon.js"></script>
  <script src="/resources/scripts/jquery.ui.note.js"></script> 

	</head>
	<body>
	<p id="addmaterialNext" title="选择要添加和修改的图片" style="display:none">//要弹出添加框,此处先定义为隐藏
	<form  id="addmaterialNextForm" name="addmaterialNextForm" enctype="multipart/form-data"  method="post">
			<table width="99%" border="1" class="grid" id="table_supp">
				<tbody class="addimg">
					<!-- <tr>/*如果选择用单行的操作则取消次注释,多行操作要有次注释,保障弹出页面的统一性*/
						<th>选择图片</th>
						<td>
						<input type="file" id="imageUrls" name="imageUrls"/>
						<input type="text" id="ids" name="ids"/>
						</td>
					</tr> -->
				</tbody>
			</table>
			<p align="center" ><input type="button"  onclick="saveData()" value="上传图片"/></p>
		</form>
		</p>
	    <span class="tit_text">药品名称:</span> 
	    <input type="text" class="input_text" id="taskCode"  placeholder="药品名"/>
	    <input type="button" value="查询" onclick="findData();"/>
	    <input type="button" value="添加图片" onclick="addimg();"/>
	    <table id="_materialNextJqGrid" class="grid" width="100%"></table>/*此列用于显示主体*/
	    <p id="_materialNextJqGridPager"></p>//此列用于分页,这两行很重要,下边的方法要用到这两个id
		
	</body>
	<script type="text/javascript">
	$(document).ready(function () {
		String.prototype.trim = function() {
			return this.replace(/(^\s*)|(\s*$)/g, "");
		};
		  $(document).note({isFloat: true,delay:3000,speed:1000}); 
		  </span>
<%
<span style="white-space:pre">			</span>String msg = (String) session.getAttribute("msg");
<span style="white-space:pre">			</span>if (null != msg && msg.equals("success")) {
<span style="white-space:pre">	</span>    %>
<span style="white-space:pre">					</span>$(document).note("add", {
<span style="white-space:pre">						</span>type : "success",
<span style="white-space:pre">						</span>message : "操作成功!"
<span style="white-space:pre">					</span>});
<span style="white-space:pre">		</span><%}
<span style="white-space:pre">				</span> if (null != msg && msg.equals("error")) {%>
<span style="white-space:pre">					</span>$(document).note("add", {
<span style="white-space:pre">						</span>type : "error",
<span style="white-space:pre">						</span>message : "操作失败!"
<span style="white-space:pre">					</span>});
<span style="white-space:pre">		</span><%}
<span style="white-space:pre">					</span>session.removeAttribute("msg");
<span style="white-space:pre">		</span>%>
<span style="font-size:18px;">
		  $("#addmaterialNext").dialog({/*c此功能是要让隐藏的弹出框显示出来,可在其中调节样式*/
				autoOpen : false,
				width : 800,
				modal : true,
				position : ['center','top']
			});
		  $("#_materialNextJqGrid").jqGrid({
		      regional: 'cn',
		      viewrecords: true,//此行是设置jqgrid拥有复选框
		      autowidth: true,
		      shrinkToFit: true,
		      multiselect: true,
		      url: 'findMaterialNextByName',/*f访问后台的URL地址此处注意没有controller上的map,也没有“/”*/
		      mtype: "post",
		      datatype: "json", 
		      page: 1,
		      colNames: ['药品名', '通用名','规格','剂型','国药准字','厂家','rduCode','图片','ID','操作'],
		      colModel: [
		        { name: 'name',width: '40px'},//此处的列名就是后台bean的属性名,拼写要一致
		        { name: 'commonName',align:'center',width: '40px'},
		        { name: 'spec',align:'center',width: '50px'},
		        { name: 'dosage',align:'center',width: '30px'},
		        { name: 'licenseNum',align:'center',width: '30px',hidden:true},
		        { name: 'manufName',align:'center',width:'40px'},
		        { name: 'rduCode',align:'center',width: '30px'},
		        { name: 'smallimg',align:'center',width: '40px',formatter:showlink},/*格式化本列为超链接*/
		        { name: 'id', hidden:true},
		        {
		            name: 'look',
		            align: 'center',
		            sortable: false,
		            formatter: formatLook,/*格式化列方法,就是再次添加单列后的操作属性功能,对应同名jq方法*/
		            hidedlg: true
		          }
		      ],
		      height: 580,
		      rowNum: 20,
		      pager: "#_materialNextJqGridPager",
		 	  rownumbers: true
		    });
		});
	function showlink(cellValue, options, rowObject) {
<span style="white-space:pre">		</span>  var html ="";
<span style="white-space:pre">		</span>  html += "<a title='rowObject.smallimg' href='"+rowObject.smallimg+"' target='_blank'>";
<span style="white-space:pre">		</span>  html += "<span style='color:#CE0000'>"+rowObject.smallimg+"</span></a>&nbsp;";  
<span style="white-space:pre">		</span>  return html; } 
	function formatLook(cellValue, options, rowObject) {
		var html ="";
		html = "<a title='上传图片' href='#' onclick='storeShowJspData("+rowObject.id+");'>";//如果点击调用显示方法
		html += "<span style='color:#CE0000'>上传图片</span></a> ";//格式化列
	    return html;
	}
	
	function storeShowJspData(id){//显示弹出框方法
		$("#addmaterialNextForm #ids").val(id);
		$("#addmaterialNext").dialog("open");
	}
	
	function saveData(){//弹出框内的保存修改方法,此处用的是表单提交,也可以ajax请求
		var name=$("#imageUrls").val();
		if(name.trim()==""){
			return message("提示:请选择图片");
		}
	  	var msgStr="您确定要保存图片吗?";
	  	var result=window.confirm(msgStr);
		if(result){
			addmaterialNextForm.action="updateMaterialNextImage";//提交到后台处理接口的链接
			addmaterialNextForm.submit();
		}
	}
	function message(msg){
		$(document).note("add", {
			type : "error",
			message : msg
		});
	}
    
	function addimg(){//多行操作时调用的方法
		var selectedIds = $("#_materialNextJqGrid").jqGrid("getGridParam", "selarrrow");//获取选中行的所有ids
		storeShowJspData(selectedIds);
		$(".addimg").append('<tr><th>药品名称</th><th>规格</th><th>厂家</th><th>操作</th></tr>');
		for (var i = 0, max = selectedIds.length; i < max; i++) {
			var rowData = $("#_materialNextJqGrid").jqGrid('getRowData',selectedIds[i]);//遍历id获取整行属性
			var name = rowData.name//属性从行对象中获取
			var spec = rowData.spec
			var manufName=rowData.manufName
			var id=rowData.id;//拼接要弹出的添加修改框
			var content='<tr><td>'+name+'</td> <td>'+spec+' </td><td>'+manufName+'</td>';
			content+='<td><input type=\"file\" id=\"imageUrls\" name=\"imageUrls\" value=\"selectedIds[i]\" />';
			content+='<input type=\"text\" id=\"ids\" name=\"ids\" value='+id+'></td></tr>';
			$(".addimg").append(content) 

        }
	}</span>
<span style="font-size:18px;">        function findData(){/*查询操作*/
<span style="white-space:pre">		</span>var name=$("#name").val();
<span style="white-space:pre">		</span>var postDataParam= {"name":name};/*获取name文本框中的内容作为参数*/
<span style="white-space:pre">		</span>$("#_materialNextJqGrid").jqGrid('setGridParam',{datatype:'json',postData:postDataParam,page:1,rows:20}).trigger('reloadGrid');
<span style="white-space:pre">	</span>}  
	</script>		
</html></span></span>

后台:

<span style="font-size:18px;">@Controller
@RequestMapping(value = "/mat")
public class MaterialController { </span>
<span style="font-size:18px;"><span style="font-size:18px;">/**
	 * 修改药品图片
	 * @param 
	 * @return
	 * updateMaterialNextImage(int id, String smallimg)
	 */
	@RequestMapping(value="/updateMaterialNextImage")
	public String updateMaterialNextImage(HttpServletRequest request,@RequestParam("imageUrls") MultipartFile[] imageUrls){
		String imageUrl="";
		String[] matIds = request.getParameterValues("ids");
		Map<String,String> imgData=new HashMap<String, String>();
		if(null!=imageUrls && imageUrls.length>0){
			for (int j = 0; j < matIds.length; j++) {
				imageUrl=uploadImage(imageUrls[j]);
				imgData.put(matIds[j], imageUrl);
			}
		}
		boolean result=this.materialService.updateMaterialNextImage(imgData);
<span style="white-space:pre">		</span>if (result) {
<span style="white-space:pre">			</span>request.getSession().setAttribute("msg", "success");//添加返回值用于前台判断是否保存成功
<span style="white-space:pre">		</span>}else{
<span style="white-space:pre">			</span>request.getSession().setAttribute("msg", "error");
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>return "redirect:/mat/findMaterialNextJsp";
	}
	/**
	 * 查询药品图片
	 * @param 
	 * @return
	 * List<MaterialNext> findMaterialNextByName(String name);
	 */
	@RequestMapping(value="/findMaterialNextJsp")
	public String findMaterialNextJsp(HttpServletRequest request){
		return "groupImage/materialNextDef";
	}
	/**
	 * 查询药品图片
	 * @param 
	 * @return
	 * List<MaterialNext> findMaterialNextByName(String name);
	 */
	@RequestMapping(value="/findMaterialNextByName")
	@ResponseBody
	public Map<String, Object> findMaterialNextByName(HttpServletRequest request,String name){
		Map<String, Object> mapData = new HashMap<String, Object>();
		Map<String, Object> mapWhere = new HashMap<String, Object>();
		mapWhere.put("name", name);
		//解析jqGrid的参数
		JqGridParams params = JqGridUtils.send(request);
		// 总行数
		int records=this.materialService.getMaterialNextCount(mapWhere);
		// 总页数
		int total = records / params.getRows() + (records % params.getRows() == 0 ? 0 : 1);
		// 启始数
		int start = (params.getPage() - 1) * params.getRows();
		//排序规则
		if(null!=params.getSidx() && !"".equals(params.getSidx())){
			mapWhere.put("orderPro", params.getSidx()+","+params.getSord());
		}
		List<MaterialNext> materialNextList=this.materialService.findMaterialNextByName(start, params.getRows(), mapWhere);
		
		//将数据返回给客户端
		JqGridReturnedData returnedData = new JqGridReturnedData();
		
		returnedData.setPage(params.getPage());
		returnedData.setRecords(records);
		returnedData.setTotal(total);
		returnedData.setRows(materialNextList);
		//返回
		JqGridUtils.returnData(mapData, returnedData);
		return mapData;
//		List<MaterialNext> materialNextList=this.materialService.findMaterialNextByName(name);
//		return materialNextList;
	}</span></span>
<span style="font-size:18px;"><span style="font-size:18px;">}</span></span>

<span style="font-size:18px;">dao:</span>
<span style="font-size:18px;">@SuppressWarnings("unchecked")
	@Override
	public List<MaterialNext> findMaterialNextByName(int page, int pageSize,Map<String, Object> mapWhere) {
		boolean defaultOrder=true;
		Map<String,Object> sqlParam=new HashMap<String, Object>();
		String sql="select top 30 g.id,g.name, g.commonName,g.spec, g.dosage, g.licenseNum,g.manufName,  g.rduCode, g.smallimg"+
			       " from dbo.t_material_next g  where 1=1 ";
		if (null != mapWhere) {
			if(null!=mapWhere.get("name") && !"".equals(mapWhere.get("name"))){
				sql +=" and g.name like '%'+name+'%'";
				sqlParam.put("name", mapWhere.get("name"));
			}
			//这个排序判断必须放到最后
			if(null!=mapWhere.get("orderPro") && !"".equals(mapWhere.get("orderPro"))){
				String[] orderPro=mapWhere.get("orderPro").toString().split(",");
				sql+=" order by "+orderPro[0]+" "+orderPro[1];
				defaultOrder=false;
			}
		}
		if(defaultOrder)
			sql+=" order by g.id";
		SQLQuery query=this.getSessionFactory().getCurrentSession().createSQLQuery(sql);
		query.setProperties(sqlParam);
		return query.setResultTransformer(Transformers.aliasToBean(MaterialNext.class)).list();
		/*String sql="select g.id,g.name, g.commonName,g.spec, g.dosage, g.licenseNum,g.manufName,  g.rduCode, g.smallimg"+
			       "from wit_selection.t_material_next g ";
       if(name != ""){
           sql+="where g.name like name";
       }
	    SQLQuery query=this.getSessionFactory().getCurrentSession().createSQLQuery(sql);
	    query.setParameter("name", "%"+name+"%");
	    List<MaterialNext> list=query.setResultTransformer(Transformers.aliasToBean(TgGroupType.class)).list();
	    return list;*/
	}

	@Override
	public boolean updateMaterialNextImage(Map<String,String> imgData) {
		try{
			StringBuffer sql = new StringBuffer();
			for (String key : imgData.keySet()) {
				sql.append("update t_material_next ");
				sql.append("set smallimg= ");
				sql.append("'"+imgData.get(key)+"'");
				sql.append(" where id="+key+";");
			}
			this.sessionFactory.getCurrentSession().createSQLQuery(sql.toString()).executeUpdate();
			return true;
		} catch (HibernateException e) {
			e.printStackTrace();
			return false;
		}
		/*try {
			String sql="update wit_selection.t_material_next set smallimg=:smallimg where id=:id";
			SQLQuery query=this.getSessionFactory().getCurrentSession().createSQLQuery(sql);
			query.setParameter("id", id);
			query.setParameter("smallimg", smallimg);
			query.executeUpdate();
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}*/
	}
	
	@Override
	public int getMaterialNextCount(Map<String, Object> map) {
		int count = 0;
		Map<String, Object> sqlMap = new HashMap<String, Object>();
		String sql = "select count(t1.id) from dbo.t_material_next t1 " 
						+ "where 1=1 ";
		if (null != map) {
			if (null != map.get("name") && !"".equals(map.get("name"))) {
				sql += " AND t1.name like '%'+name+'%' ";
				sqlMap.put("name", map.get("name"));
			}
		}
		SQLQuery query = getSessionFactory().getCurrentSession().createSQLQuery(sql);
		query.setProperties(sqlMap);
		List list = query.list();
		if (null != list && list.size() > 0) {
			count = Integer.valueOf(list.get(0).toString());
		}
		return count;
	}</span>

查询操作:

<span style="font-size:18px;"><span style="font-size:18px;">function findData(){
		var name=$("#name").val();
		var postDataParam= {"name":name};
		$("#_materialNextJqGrid").jqGrid('setGridParam',{datatype:'json',postData:postDataParam,page:1,rows:20}).trigger('reloadGrid');
	}//重定向</span></span>


Tags:JQ QG GR RI 
作者:网络 来源:qililong88