- 浏览: 25602 次
最新评论
一、页面引用
注意:经测试需引用jquery-1.8.0.min.js这个版本的js,低版本可能不使用,我用的是easyui的版本是1.4.2
二、后台代码
其中,sex、birthday、admin是在datagrid中的行详情中显示的,也就是说在datagrid中不能直接看到它们,需要点击datagrid中行前面那个“+”号查看这一行的详情信息才能看到这三个信息。
三、js代码
view: detailview,表示datagrid在视图上显示行的详情,行号后有个“+”,点击就会显示这一行的详情,detailFormatter对详情信息格式化,这里包括显示什么,以怎样的样式显示等设置。需注意的是,对于在详情中显示的信息而无需再datagrid中显示的列应设置隐藏列。
代码写好了,效果如下:
小结:这种写法有一个缺陷--即当完成对用户信息的修改操作后,如果用了是loaded的刷新方式,则查看行中的详情信息时不会和修改的信息同步,即看到的还是修改之前的信息。只能用load的方式刷新datagrid。
解决方式见文章“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>" +" <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中显示行详情(二)”
发表评论
-
easyui实现datagrid行内编辑
2015-10-02 02:21 7423easyui的datagrid行内编辑 ... -
struts2+easyui实现根据条件检索信息
2015-10-02 01:52 2035根据不同条件或组合条件检索信息是很常用的需求,下面将在stru ... -
struts2+easyui的datagrid显示列表信息
2015-10-02 01:22 2963easyui的datagrid主要用于显示列表信息,其中包含分 ... -
创建easyui-dialog实现增加/修改bean信息
2015-10-02 00:27 4290是否采用dialog增加/修改bean信息根据项目需求而定,一 ... -
easyui在datagrid中显示行详情(二)
2015-10-01 22:45 1431一、引用文件 注:1.datagrid-detailview. ...
相关推荐
在EasyUI DataGrid中,可以使用`footer`选项来显示底部总计行。首先,需要在DataGrid的列定义中为需要计算的列设置`field`,然后在`onLoadSuccess`事件中进行计算,将结果添加到footer。例如,如果你有一个名为`...
在本文中,我们将深入探讨如何在ASP.NET环境中使用EasyUI的DataGrid显示数据。 首先,确保你已经下载了最新的EasyUI版本。由于标题提到旧版本可能存在问题,因此及时更新至官方发布的最新版本至关重要,以获取更好...
easyUI中datagrid鼠标悬浮显示图片,博客地址:https://blog.csdn.net/lwf3115841/article/details/119531658?spm=1001.2014.3001.5501
在前端开发中,easyui是一个非常实用的库,它提供了一套完整的用户界面组件,能够帮助开发者快速构建出功能丰富的Web应用。其中,`datagrid`是easyui提供的一个重要的组件,用于展示表格数据,并支持排序、分页等...
在本案例中,我们关注的是"datagrid嵌套"这一主题,这涉及到在EasyUI的datagrid组件中嵌套显示其他数据或者子表格。 首先,`datagrid22_demo.html`是主页面,它包含datagrid的配置和布局。在这个文件中,我们可以...
jquery easyui 扩展 datagrid 自定义动态隐藏显示列
在使用EasyUI框架开发Web应用时,Datagrid组件是一个非常重要的元素,它提供了一种方便的方式来展示和操作数据。在标题“easyui datagrid在编辑状态下更新列的值”中,我们关注的是如何在Datagrid的编辑模式下动态地...
在本示例中,我们关注的是如何在EasyUI的Datagrid组件上添加一个特殊功能:当鼠标悬停在某一行时,弹出一个窗口显示该行的关键信息,例如用于图片预览。以下是对这个知识点的详细解释: 1. **EasyUI Datagrid**: ...
在easyUI中,`combogrid`是一个结合了`combobox`和`grid`特性的组件,它可以在一个下拉列表中展示表格数据,非常适合用于展示复杂的数据结构。例如,当需要在一个下拉列表中选择某个项目时,同时还需要展示该项目的...
在jQuery EasyUI中,DataGrid是一种常用的表格展示控件,它可以与各种编辑器结合使用,如combobox(下拉框)来实现更丰富的交互功能。本文主要探讨的是如何利用jQuery EasyUI的DataGrid和combobox组件实现多级联动的...
easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格
修改上一个资源版本中结束编辑时combobox显示问题. 1、类型为combogrid时每行的参数不同查询返回对应的数据结果。 2、类型为combobox时,输入框显示图标按钮,实现对应的事件。 3、解决类型为combobox显示为value而...
jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) Demo 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件,源码奉献!!!
在实际应用中,动态加载数据是DataGrid的一个重要特性,允许用户在需要时加载更多的数据,提高网页性能并优化用户体验。 动态加载数据通常指的是懒加载(Lazy Loading)机制,即只在用户滚动到数据视图的底部或者...
标题中的“easyui datagrid 右冻结”是指在使用EasyUI框架开发Web应用程序时,针对datagrid组件实现右侧列固定的功能。EasyUI是一个基于jQuery的UI库,提供了丰富的组件,包括datagrid,它是一个用于展示表格数据的...
在IT领域,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如数据分页、排序、筛选等。当我们需要将Datagrid中的数据进行打印时,可能会遇到一些挑战,因为通常默认的浏览器打印功能...
EasyUI的datagrid可以自动解析JSON数据并显示在表格中。 在`pom.xml`文件中,我们需要添加EasyUI和Spring Boot的相关依赖,例如: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-...
UI设计在一个系统中的重要性是不容忽视的,我们开发人员要做到:让用户去控制计算机,而不是计算机控制用户;减少用户的记忆负担;保持界面一致。 给你的Easyui-DataGrid 表头添加一点料吧 Easyui-Datagrid—表头...
这个“jquery easyui datagrid demo”包含了一些关于如何使用 jQuery EasyUI 中 Datagrid 组件的示例和相关文档,帮助我们理解和应用 Datagrid。 首先,`datagrid.doc` 文件很可能是 Datagrid 的简要说明文档,它...
在拖拽效果中,用户可以直观地将一行或多行数据从一个 Datagrid 拖动到另一个 Datagrid,实现数据的移动或复制。 实现这个效果的关键技术点包括: 1. **jQuery 插件扩展**:EasyUI 是基于 jQuery 构建的,因此实现...