`
wql025
  • 浏览: 25525 次
社区版块
存档分类
最新评论

easyui在datagrid中显示行详情(一)

阅读更多
一、页面引用
<!-- 1.页面引入样式 -->
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/jquery-easyui-1.4.2/themes/gray/easyui.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/jquery-easyui-1.4.2/themes/icon.css">
<!-- 2.页面引入脚本 -->
<script type="text/javascript"src="${pageContext.request.contextPath }/jquery-easyui-1.4.2/jquery-1.8.0.min.js"></script>
<script type="text/javascript"src="${pageContext.request.contextPath }/jquery-easyui-1.4.2/jquery.easyui.min.js"></script>
<script type="text/javascript"src="${pageContext.request.contextPath }/jquery-easyui-1.4.2/datagrid-detailview.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/jquery-easyui-1.4.2/locale/easyui-lang-zh_CN.js"></script> 
<!-- 3.页面引入自定义脚本 -->
<script type="text/javascript" src="${pageContext.request.contextPath }/js/userManager.js" ></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/validate.js" ></script>
<!-- 4.页面引入其他脚本 -->
<link href="${pageContext.request.contextPath }/myDatePicker_2.2/datePicker.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="${pageContext.request.contextPath }/myDatePicker_2.2/jquery.datePicker-min.js"></script>

注意:经测试需引用jquery-1.8.0.min.js这个版本的js,低版本可能不使用,我用的是easyui的版本是1.4.2

二、后台代码
其中,sex、birthday、admin是在datagrid中的行详情中显示的,也就是说在datagrid中不能直接看到它们,需要点击datagrid中行前面那个“+”号查看这一行的详情信息才能看到这三个信息。
//显示员工信息列表
	public void listEmpl() throws IOException{
		   
		   resp.setCharacterEncoding("UTF-8");
		   
		   Empl currEmpl = (Empl) session.getAttribute("emp1");
		   int currId = currEmpl.getEid();
		   
		   int offset=!"".equals(req.getParameter("page"))&&null!=(req.getParameter("page"))?Integer.parseInt(req.getParameter("page")):1;
		   
		   Pager<Object[]> pager=null;
		   //查询条件:员工名称、职位、部门名称、状态
           pager=empService.search(empl,ajob,adept,ajobStatus,currId,offset);
			
		   //将数据存入list中,它存入的是map,这样在easyui才能以键值对的形式获取到具体的数据
		   List<Map<String,String>> list = new ArrayList<>();
		   Map<String,String> map0 = null;
		   for (Object[] e : pager.getList()) {
			   map0=new HashMap<String, String>();
			   map0.put("eid", String.valueOf(e[0]));
			   map0.put("ename", String.valueOf(e[1]));
			   map0.put("sex", String.valueOf(e[2]));//datagrid中的行详情列
			   map0.put("birthday", String.valueOf(e[3]));//datagrid中的行详情列
			   map0.put("hiredate", String.valueOf(e[6]));//入职时间
			   map0.put("jname", String.valueOf(e[5]));//职位(具体干什么)
			   map0.put("dname", String.valueOf(e[4]));//部门编号
			   map0.put("status", String.valueOf(e[7]));//状态(新入职,转正..)
			   map0.put("admin", String.valueOf(e[11]));//员工职责 datagrid中的行详情列
			   //部门编号、职位编号、在职状态编号
			   map0.put("did", String.valueOf(e[8]));
			   map0.put("jid", String.valueOf(e[9]));
			   map0.put("jsid", String.valueOf(e[10]));
			   list.add(map0);
		   }
		   //设置总行数,行数据
		   Map<String,Object> map = new HashMap<String, Object>();
		   map.put("total", pager.getSumRows());
		   map.put("rows", list);
		   //将map转换为json格式
		   String s = JSON.toJSONString(map);
		   PrintWriter out = resp.getWriter();
		   out.println(s);
	}


三、js代码
view: detailview,表示datagrid在视图上显示行的详情,行号后有个“+”,点击就会显示这一行的详情,detailFormatter对详情信息格式化,这里包括显示什么,以怎样的样式显示等设置。需注意的是,对于在详情中显示的信息而无需再datagrid中显示的列应设置隐藏列。
$('#dg').datagrid({
		//条纹
		striped:true, 
		//标题
		title:'用户管理',
		//提交的url地址
		url:'emplAction!listEmpl.action',
		//允许收缩数据
		collapsible:'true',
		//分页
		pagination:'true',
		//自适应
		fit:'true',
		//默认页容量
		pageSize:'10',
		//分页工具位置
		pagePosition:'top',
		//列自适应
		fitColumns:'true',
		//显示编号
		rownumbers:'true',
		//排序
		sortable:'true',
		sortName:'id',
		//主键
		idField:'id',
		//显示用户详情
		view: detailview,
		detailFormatter: function(rowIndex, rowData){
			admin = undefined
			if(rowData.admin==0)admin='前台'
			else admin='后台'
			var detailTable=
			'<table>' +
					'<tr>' +
					    '<td class="dv-label" style="border:0;padding-left:6px;width:41px">姓名: </td>' +
					    '<td style="border:0;width:80px">'+rowData.ename+'</td>' +
						'<td class="dv-label" style="border:0;width:41px">性别: </td>' +
						'<td style="border:0;width:40px">'+rowData.sex+'</td>' +
						'<td class="dv-label" style="border:0;">出生日期:</td>' +
						'<td style="border:0;width:90px">'+rowData.birthday+'</td>' +
						'<td class="dv-label" style="border:0;width:41px"">职责:</td>' +
						'<td style="border:0;width:80px">'+admin+'</td>' +
					'</tr>' +
			'</table>';
			return detailTable;
		},
		//在datagrid中进行添加或修改操作。注:当前业务没有在datagrid中“添加操作”的需求,只有更新操作,故省去了“添加操作”的判定。
		onAfterEdit:function(rowIndex,rowData,changes){//--
			var updated = $('#dg').datagrid('getChanges','updated');
			var url = '';
			//如果选择了修改,但实际未做任何改变,则直接返回false
			if(updated.length==0){
				obj.editRow = undefined;
				return false
			}
			//修改用户
			if(updated.length>0){
				url='emplAction!editStatus.action';
			}
			//ajax提交
			$.ajax({
				timeout:1000,//超时时间设置,单位:毫秒
				type:'post',
				url:url,
				data:{
					row:rowData,
				},
			   /* beforeSend:function(){
			    	console.log("提交前..")
			    	console.log(rowData);
			    	console.log(url);
			    	$('#dg').datagrid('loading');
			    },*/
			    success:function(data){
			    	if(data){
			    		$('#dg').datagrid('loaded');
			    		$('#dg').datagrid('load');
			    		$('#dg').datagrid('unselectAll');
			    		//当前行结束编辑
			    		$('#dg').datagrid('endEdit',obj.editRow);
			    		$.messager.show({
			    			title:'提示',
			    			msg:data,
			    		})
			    		obj.editRow = undefined;
			    	}
			    },
			    complete:function(XMLHttpRequest,status){
			    	if(status=='timeout'){
			    		alert('修改失败,超时..')
			    	}
			    },
			    error:function(XMLHttpRequest,errorThrown){
			    	if(errorThrown=='408'){
			    		alert('修改失败,超时..')
			    	}
			    }
			    
			})
		},
		//列字段
		columns:[[
		          {
		        	  field:'ck',
		        	  checkbox:true
		          },
		          {
		        	  field:'eid',
		        	  title:'用户编号',
		        	  width:100,
		        	  align:'center',
		        	  sortable:'true',//排序
		        	  readonly:'true',
		        	  disabled:true//禁止编辑
		        	  /*editor:{
		        		  type:'numberbox',
		        		  options:{
		        			  required:true,
		        			  disabled:true//禁止编辑
		        		  }
		        	  }*/
		          },
		          {
		        	  field:'ename',
		        	  title:'用户名',
		        	  width:100,
		        	  align:'center',
		        	  readonly:'true',
		        	  disabled:true
		          },
		          {
		        	  field:'hiredate',
		        	  title:'入职时间',
		        	  width:100,
		        	  align:'center',
		        	  readonly:'true',
		        	  disabled:true
		          },
		          {
		        	  field:'jname',
		        	  title:'职位描述',
		        	  width:100,
		        	  align:'center',
		        	  readonly:'true',
		        	  disabled:true
		          },
		          {
		        	  field:'dname',
		        	  width:100,
		        	  title:'所属部门',
		        	  align:'center',
		        	  readonly:'true',
		        	  disabled:true
		          },
		          {
		        	  field:'status',
		        	  width:100,
		        	  title:'状态',
		        	  align:'center',
		        	  editor:{
		        		  type:'combobox',
		        		  options:{
		        			  url:"emplAction!getJobStatusListAsJs.action",
		        			  required:true,
		        			  panelHeight: 'auto',
		        			  valueField:'jsid',
		        			  textField:'status'
		        		  }
		        	  }
		        		  
		          },
		          {
		        	  field:'process',
		        	  title:'操作',
		        	  width:150,
		        	  align:'center',
		        	  formatter:function(value,row,index){
		        		  if((row.status==0)&&(row.status!=2)){
		        			  return "<a href='javascript:obj._delete("+row.eid+")'>删除</a>"
		        		  }else{
		        			  return "<a href='javascript:obj.editStatus("+index+")'>修改状态</a>"
		        			  +"&nbsp;&nbsp;<a href='javascript:obj._delete("+row.eid+")'>删除</a>"
		        		  }
		        	  }
		          },//隐藏列:员工详情
		          {
		        	  field:'sex',
		          },
		          {
		        	  field:'admin',
		          },
		          {
		        	  field:'birthday',
		          },//隐藏列:员工的部门编号、职位编号、状态编号。在mydialog中添加/修改操作时设置下拉框的默认选项有用到。
		          {
		        	  field:'did',
		          }
		          ,
		          {
		        	  field:'jid',
		          },
		          {
		        	  field:'jsid',
		          }
		          
		]],
		
	})
	//隐藏列
	$('#dg').datagrid('hideColumn', 'birthday')
	$('#dg').datagrid('hideColumn', 'sex')
	$('#dg').datagrid('hideColumn', 'did')
	$('#dg').datagrid('hideColumn', 'jid')
	$('#dg').datagrid('hideColumn', 'jsid')
    

代码写好了,效果如下:



小结:这种写法有一个缺陷--即当完成对用户信息的修改操作后,如果用了是loaded的刷新方式,则查看行中的详情信息时不会和修改的信息同步,即看到的还是修改之前的信息。只能用load的方式刷新datagrid。
$('#dg').datagrid('load');//只能用这种方式刷新datagrid才能在修改后即时看到修改的信息
$('#dg').datagrid('loaded');//不能用这样方式刷新datagrid

解决方式见文章“easyui在datagrid中显示行详情(二)”
  • 大小: 2.4 KB
分享到:
评论

相关推荐

    easyui的datagrid生成合并行,合计计算价格

    在EasyUI DataGrid中,可以使用`footer`选项来显示底部总计行。首先,需要在DataGrid的列定义中为需要计算的列设置`field`,然后在`onLoadSuccess`事件中进行计算,将结果添加到footer。例如,如果你有一个名为`...

    EasyUI的DataGrid显示ASP.NET内容

    在本文中,我们将深入探讨如何在ASP.NET环境中使用EasyUI的DataGrid显示数据。 首先,确保你已经下载了最新的EasyUI版本。由于标题提到旧版本可能存在问题,因此及时更新至官方发布的最新版本至关重要,以获取更好...

    easyUI中datagrid鼠标悬浮显示图片

    easyUI中datagrid鼠标悬浮显示图片,博客地址:https://blog.csdn.net/lwf3115841/article/details/119531658?spm=1001.2014.3001.5501

    easyui的datagrid中editor和combobox的级联

    在前端开发中,easyui是一个非常实用的库,它提供了一套完整的用户界面组件,能够帮助开发者快速构建出功能丰富的Web应用。其中,`datagrid`是easyui提供的一个重要的组件,用于展示表格数据,并支持排序、分页等...

    easyui下datagrid嵌套显示相关文件

    在本案例中,我们关注的是"datagrid嵌套"这一主题,这涉及到在EasyUI的datagrid组件中嵌套显示其他数据或者子表格。 首先,`datagrid22_demo.html`是主页面,它包含datagrid的配置和布局。在这个文件中,我们可以...

    easyui datagrid 动态隐藏显示列

    jquery easyui 扩展 datagrid 自定义动态隐藏显示列

    easyui datagrid在编辑状态下更新列的值

    在使用EasyUI框架开发Web应用时,Datagrid组件是一个非常重要的元素,它提供了一种方便的方式来展示和操作数据。在标题“easyui datagrid在编辑状态下更新列的值”中,我们关注的是如何在Datagrid的编辑模式下动态地...

    easyui datagrid 增加鼠标悬停弹窗事件

    在本示例中,我们关注的是如何在EasyUI的Datagrid组件上添加一个特殊功能:当鼠标悬停在某一行时,弹出一个窗口显示该行的关键信息,例如用于图片预览。以下是对这个知识点的详细解释: 1. **EasyUI Datagrid**: ...

    easyui的datagrid中editor和combogrid的结合使用

    在easyUI中,`combogrid`是一个结合了`combobox`和`grid`特性的组件,它可以在一个下拉列表中展示表格数据,非常适合用于展示复杂的数据结构。例如,当需要在一个下拉列表中选择某个项目时,同时还需要展示该项目的...

    jQuery EasyUI编辑DataGrid用combobox实现多级联动

    在jQuery EasyUI中,DataGrid是一种常用的表格展示控件,它可以与各种编辑器结合使用,如combobox(下拉框)来实现更丰富的交互功能。本文主要探讨的是如何利用jQuery EasyUI的DataGrid和combobox组件实现多级联动的...

    easyui datagrid中实现上下左右、回车切换单元格

    easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格

    Easyui Datagrid 实现行过滤[模糊查询]

    在本篇中,我们将深入探讨如何在EasyUI的Datagrid中实现行过滤,特别是行模糊查询功能,以及其在数据库远程查询中的应用。 首先,`EasyUI Datagrid` 是一个强大的表格控件,它允许开发者轻松地展示和操作数据,支持...

    easyui datagrid 行编辑中combogrid和combobox显示问题

    修改上一个资源版本中结束编辑时combobox显示问题. 1、类型为combogrid时每行的参数不同查询返回对应的数据结果。 2、类型为combobox时,输入框显示图标按钮,实现对应的事件。 3、解决类型为combobox显示为value而...

    扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件完整版Demo下载

    jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) Demo 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件,源码奉献!!!

    JS EasyUI DataGrid动态加载数据

    在实际应用中,动态加载数据是DataGrid的一个重要特性,允许用户在需要时加载更多的数据,提高网页性能并优化用户体验。 动态加载数据通常指的是懒加载(Lazy Loading)机制,即只在用户滚动到数据视图的底部或者...

    easyui datagrid 右冻结

    标题中的“easyui datagrid 右冻结”是指在使用EasyUI框架开发Web应用程序时,针对datagrid组件实现右侧列固定的功能。EasyUI是一个基于jQuery的UI库,提供了丰富的组件,包括datagrid,它是一个用于展示表格数据的...

    easyui datagrid 表格 打印

    在IT领域,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如数据分页、排序、筛选等。当我们需要将Datagrid中的数据进行打印时,可能会遇到一些挑战,因为通常默认的浏览器打印功能...

    Spring Boot 系列教程 EasyUI-datagrid

    EasyUI的datagrid可以自动解析JSON数据并显示在表格中。 在`pom.xml`文件中,我们需要添加EasyUI和Spring Boot的相关依赖,例如: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-...

    Easyui-DataGrid表头拖动效果

    UI设计在一个系统中的重要性是不容忽视的,我们开发人员要做到:让用户去控制计算机,而不是计算机控制用户;减少用户的记忆负担;保持界面一致。 给你的Easyui-DataGrid 表头添加一点料吧 Easyui-Datagrid—表头...

    jquery easyui datagrid demo

    这个“jquery easyui datagrid demo”包含了一些关于如何使用 jQuery EasyUI 中 Datagrid 组件的示例和相关文档,帮助我们理解和应用 Datagrid。 首先,`datagrid.doc` 文件很可能是 Datagrid 的简要说明文档,它...

Global site tag (gtag.js) - Google Analytics