核心提示: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> "; <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>