`
gKF63335
  • 浏览: 9143 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

easyui的datagrid的基本使用

阅读更多
最近用easyui的datagrid,此datagrid具有增删改查,满足基本的使用:

1.jsp代码(对页面的初始化操作):
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	
	<title>ComboBox - jQuery EasyUI Demo</title>
	
	<%
		String path = request.getContextPath();
	%>
	
	<link rel="stylesheet" type="text/css" href="<%=path %>/jquery_ui/themes/default/easyui.css">
	<link rel="stylesheet" type="text/css" href="<%=path %>/jquery_ui/themes/icon.css">
	<link rel="stylesheet" type="text/css" href="<%=path %>/jquery_ui/ui.css">
	<script type="text/javascript" src="<%=path %>/jquery_ui/jquery-1.6.min.js"></script>
	<script type="text/javascript" src="<%=path %>/jquery_ui/jquery.easyui.min.js"></script>
	<script>
	$(function(){
		var lastIndex;
		$('#test').datagrid({
			title:'My DataGrid',
			iconCls:'icon-save',
			width:800,
			height:"auto",
			nowrap: false,
			striped: true,
			collapsible:true,
			url:'TestAction!getGridInfo.action',
			idField:'id',
			singleSelect:true,
			fitColumns: true,
			frozenColumns:[[
                {field:'ck',checkbox:true},
                {title:'编号',field:'id',width:80,sortable:true}
			]],
			columns:[[
		        {title:'基本信息',colspan:2},
				{
					field:'tel',
					title:'移动电话',
					width:100,
					align:'center', 
					rowspan:2,
					editor: {
						type: 'numberbox',
						options:{
							required: true,
							validType: "length[11,11]"
						}
		        		
					}
				}
			],[
				{
					field:'name',
					title:'姓名',
					width:120,
					editor:'text'
				},
				{field:'address',title:'地址',width:220,rowspan:2,editor:'text'}
			]],
			pagination:true,
			toolbar:[{
				id:'btnadd',
				text:'Add',
				iconCls:'icon-add',
				handler:function(){
					$('#btnsave').linkbutton('enable');
					alert('add')
				}
			},{
				id:'btncut',
				text:'Cut',
				iconCls:'icon-cut',
				handler:function(){
					$('#btnsave').linkbutton('enable');
					alert('cut')
				}
			},'-',{
				id:'btnsave',
				text:'Save',
				disabled:true,
				iconCls:'icon-save',
				handler:function(){
					$('#btnsave').linkbutton('disable');
					alert('save')
				}
			}],
			onClickRow: function(rowindex){
				$('#test').datagrid('endEdit', lastIndex);
				$('#test').datagrid('beginEdit', rowindex);
				var ed = $('#test').datagrid('getEditors', rowindex);
				
				for (var i = 0; i < ed.length; i++){
					var e = ed[i];
					$(e.target).bind("keyup",function(event){
						if (event.which == 13){
							$('#test').datagrid('endEdit', rowindex);
						}
					});
				}
				lastIndex = rowindex;
			},
			onAfterEdit: function(rowIndex, rowData){
				$.ajax({
				   url: "<%=request.getContextPath()%>/TestAction!updateGrid.action",
				   data: "name="+encodeURIComponent(rowData.name)+"&address="+encodeURIComponent(rowData.address)+"&tel="+encodeURIComponent(rowData.tel)+"&id="+rowData.id,
				   cache:false,
			       async : true
				})
			}
		});
		
		var p = $('#test').datagrid('getPager');
		
		$(p).pagination({
			pageSize:10,
			pageList:[10,20,50],
			beforePageText: '第',
			afterPageText: '页    共 {pages} 页',
			displayMsg: '当前显示 {from} - {to} 条记录   共 {total} 条',
			onBeforeRefresh:function(){
				$("#test").datagrid("reload");
			}
		});
	});

	function search(value){
		var p = $('#test').datagrid('getPager');
		$(p).pagination({
			pageNumber: 1
		});
		var queryParams = $('#test').datagrid('options').queryParams; 
		queryParams.name=value;
		$('#test').datagrid("reload");
	}
	</script>
	
	<style type="text/css">
		.demo-info{
			background:#FFFEE6;
			color:#8F5700;
			padding:12px;
		}
		.demo-tip{
			width:24px;
			height:16px;
			float:left;
		}
	</style>
</head>
<body>
	<h2>Complex DataGrid</h2>
	<div class="demo-info">
		<div class="demo-tip icon-tip"></div>
		<div>Click the button to do actions with datagrid.</div>
	</div>
	
	<input class='easyui-searchbox' prompt='请输入姓名进行搜索' style='width:798px' searcher='search'/>
	
	<table id="test"></table>
</body>
</html>


2.处理逻辑的TestAction类:
public class TestAction extends ActionSupport{
	
	private int rows;
	private int page;
	private long total;
	
	private QueryDao dao = new QueryDao();

	public long getTotal() {
		return total;
	}

	public void setTotal(long total) {
		this.total = total;
	}

	public int getRows() {
		return rows;
	}

	public void setRows(int rows) {
		this.rows = rows;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}
	
	public void getGridInfo(){
		HttpServletRequest request = ServletActionContext.getRequest();
		List<Grid> list = new ArrayList<Grid>();
		String name = request.getParameter("name");
		
		if(!("".equals(name) || name == null)){
			//根据名称进行模糊查询,并初始化查询出来的数据的页数和行数
			name = name.trim();
			list = dao.getGridByName(name, page, rows);
			total = dao.getSize();
		}else{
			total = dao.getTotal();
			list=dao.getGridData(page ,rows);
		}
		Map<String,Object> jsonMap = new HashMap<String,Object>();
		jsonMap.put("total", total);
		jsonMap.put("rows", list);
		JSONObject json=new JSONObject();
		json=JSONObject.fromObject(jsonMap);
		try {
			ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
			PrintWriter pw=ServletActionContext.getResponse().getWriter();
			pw.println(json.toString()); 
			pw.flush();
			pw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

public void updateGrid(){
		String id=(String)ServletActionContext.getRequest().getParameter("id");
		String name=(String)ServletActionContext.getRequest().getParameter("name");
		String address=(String)ServletActionContext.getRequest().getParameter("address");
		String tel=(String)ServletActionContext.getRequest().getParameter("tel");
		String hql="update Grid g set g.name=?,g.address=?,g.tel=? where g.id=?";
		try
        {
			DataAccess.createPersister().saveOrUpdateBySqlString(hql,new Object[]{name,address,tel,id});
			dao.updateGridCache(id);
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
	}

}


3.查询数据的QueryDao(如果大数据量,建议使用缓存):
public class QueryDao{
	
	private long size;
	
	private int initPage;
		
	public int getInitPage() {
		return initPage;
	}
	
	public long getSize() {
		return size;
	}
	/**
	 * 查询出所有的grid数据,便于进行大数据量的模糊查询
	 * @return
	 */
	public List<Grid> getAllGrid(){
		
        String hql = "from Grid";
        try
        {
            Query query = DataAccess.createQuery();
            
            @SuppressWarnings("unchecked")
            List<Grid> gridResult = query.queryByHqlString(hql);
            return gridResult;
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
        return new ArrayList<Grid>();
	}
	
	public List<Grid> getGridData(int page , int row){
		//Cache cache = CacheManager.getInstance().getCache("grid");
		List<Grid> list = (List<Grid>)getAllGrid();
        return spliList(list, page, row);
	}
	
	public Long getTotal(){
		String countHql = "select count(*) from Grid";
		try
        {
            Query query = DataAccess.createQuery();
            
            List countList = query.queryByHqlString(countHql);
            long total = (Long)countList.get(0);            
            return total;
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
		return 0L;
	}
	
	public Grid getGridById(String id){
		String hql = "from Grid where id=?";
		try
        {
            Query query = DataAccess.createQuery();
            
            List countList = query.queryByHqlString(hql,new Object[]{id});
            return (Grid)countList.get(0);
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
		return new Grid();
	}
	
	/**
	 * 查询包含此数据名的数据
	 * @param name
	 * @param total
	 * @return
	 */
	public List<Grid> getGridByName(String name,int page, int rows){
		List<Grid> gridList = new ArrayList<Grid>();
		Cache cache = CacheManager.getInstance().getCache("grid");
		List<Grid> list = (List<Grid>)cache.getValue();
		for(int i = 0, len = list.size(); i < len; i++){
			Grid grid = (Grid) list.get(i);
			if(grid.getName().contains(name)){
				gridList.add(grid);
			}
		}
		size = gridList.size();
		return spliList(gridList, page, rows);
	}
	
	/**
	 * 对list进行分页
	 * @param list
	 * @param page
	 * @param rows
	 * @return
	 */
	public List spliList(List list, int page, int rows){
		List grid = new ArrayList();
		int a = (page - 1) * rows;
		int b = a + rows;
		for(int i = a; i < b; i++){
			try {
				grid.add(list.get(i));
			} catch (IndexOutOfBoundsException e) {
				return grid;
			}
		}
		return grid;
	}
	
	public void updateGridCache(String id){
		Cache cache = CacheManager.getInstance().getCache("grid");
		List<Grid> list = (List<Grid>)cache.getValue();
		for (int i = 0, len = list.size(); i < len; i++) {
			Grid grid  = list.get(i);
			if(id.equals(grid.getId())){
				Grid updateGrid = getGridById(id);
				list.remove(i);
				list.add(i, updateGrid);
				cache.setValue(list);
				return;
			}
		}
	}
}


以上就是如何基本使用easyui的datagrid...
分享到:
评论

相关推荐

    easyui datagrid 表格 打印

    4. **使用JavaScript打印库**:可以利用像jsPDF这样的库,将Datagrid数据转换为PDF文档,再进行打印。这种方式不仅能够保留格式,还便于用户保存和分享。 5. ** formatter回调**:在打印前,通过遍历Datagrid的所有...

    easyui datagrid 数据导出到Excel

    文件`Jquery_easyui_datagrid_js导出excel.doc`可能是文档说明或者包含插件使用的示例代码。通常,jQuery插件能简化Datagrid数据导出的操作。一种常见的方式是使用`html2canvas`和`jsPDF`库,它们可以将HTML内容转换...

    easyui datagrid 右冻结

    1. **理解EasyUI datagrid**:首先,你需要熟悉EasyUI datagrid的基本用法,包括其初始化、数据加载、列配置等。 2. **分析源码**:查看easyui的源代码,找到处理表格滚动的部分,理解其工作原理。 3. **创建固定...

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

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

    easyUI datagrid rownumber自适应宽度扩展JS

    easyUI datagrid 自动调整行号大小

    easyui datagrid editor回车切换单元格示例,可参考

    easyui datagrid editor回车切换单元格示例,适合熟悉easyui但又不懂如何做的人员,可能参考一下源码JS。

    JS EasyUI DataGrid动态加载数据

    JS EasyUI DataGrid是一款基于jQuery和EasyUI框架的数据表格组件,它提供了丰富的功能,如数据分页、排序、过滤和自定义操作等。在实际应用中,动态加载数据是DataGrid的一个重要特性,允许用户在需要时加载更多的...

    jquery easyui datagrid demo

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

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

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

    EasyUI DataGrid过滤用法实例

    总的来说,这个实例提供了关于如何在 EasyUI 的 DataGrid 中启用和使用过滤功能的指导。通过设置列的过滤属性、处理过滤事件和重新加载数据,我们可以创建一个交互性强、用户体验良好的数据管理界面。这个实例对于...

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

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

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

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

    EasyUI Datagrid 中文排序的问题

    默认情况下,EasyUI Datagrid 支持基本的数据排序功能,但其默认排序逻辑是基于字符编码的,因此无法直接实现中文按拼音顺序的排序。 #### 三、前端解决方案 对于前端来说,可以通过自定义排序函数的方式来实现中文...

    easyui datagrid 分页查询样例

    通过这个样例,开发者可以学习到如何结合EasyUI Datagrid和SpringMVC实现后台分页查询,理解前后端数据交互的原理,并且掌握相关框架和组件的使用。这将有助于提升Web应用的数据展示效率和用户体验。

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

    在IT领域,尤其是在Web开发中,EasyUI是一个广泛使用的JavaScript框架,它基于jQuery,提供了丰富的UI组件,如Datagrid,用于构建数据展示和管理的表格。在本篇中,我们将深入探讨如何在EasyUI的Datagrid中实现行...

    easyui datagrid 多条件筛选 可复选 类似淘宝筛选

    本文将深入探讨如何使用EasyUI datagrid实现多条件筛选功能,特别是支持可复选的筛选条件,类似于淘宝网站上的商品筛选功能。 首先,`datagrid`是EasyUI中的一个核心组件,它用于展示数据表格,支持分页、排序、...

    解决EasyUIdataGrid列比较多,无数据,列展现不全

    在使用EasyUI框架进行前端开发的过程中,可能会遇到dataGrid组件在数据为空时列显示不完整的问题。这不仅影响用户体验,也降低了系统的可用性。本文将详细介绍如何解决当dataGrid列较多且无数据显示不全的情况,并...

    easyui datagrid 导出到excel

    EasyUI Datagrid是基于HTML和JavaScript的,它使用了jQuery库来简化DOM操作和事件处理。Datagrid提供了一个灵活的表格布局,可以轻松地处理大量数据,并支持多种自定义选项,如列宽调整、行选择、复选框选择等。 2...

    easyUI datagrid 行上移,下移,置顶,置底的方法

    easyUI datagrid 行上移,下移,置顶,置底的方法

    easyui datagrid标题列宽度自适应

    EasyUI是一个基于jQuery的轻量级框架,提供了一系列易于使用的UI组件,包括datagrid,用于创建表格布局。 在EasyUI的datagrid中,列的宽度通常可以设置为固定、自动或自适应。固定宽度是直接设定每列的具体像素值;...

Global site tag (gtag.js) - Google Analytics