jquery.edatagrid(可编辑datagrid)的使用
用spring+springmvc+mybatis+mysql实现简单的可编辑单元格,首先是页面效果图:

其中,“编号”列是不可编辑的,“暂缓措施”是可以自由编辑的,主要html组成:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.3.3/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.3.3/themes/icon.css">
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.3.3/jquery.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.3.3/jquery.easyui.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.3.3/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.3.3/jquery.edatagrid.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/common.js"></script>
<script type="text/javascript"> $(function(){
$("#dg").edatagrid({
url:'${pageContext.request.contextPath}/customerReprieve/list.do?lossId=${param.lossId}',
saveUrl:'${pageContext.request.contextPath}/customerReprieve/save.do?customerLoss.id=${param.lossId}',
updateUrl:'${pageContext.request.contextPath}/customerReprieve/save.do',
destroyUrl:'${pageContext.request.contextPath}/customerReprieve/delete.do'
});
}); function confirmLoss(){
$.messager.prompt('系统提示', '请输入流失原因:', function(r){
if (r){
$.post("${pageContext.request.contextPath}/customerLoss/confirmLoss.do",{id:'${param.lossId}',lossReason:r},function(result){
if(result.success){
$.messager.alert("系统提示","执行成功!");
}else{
$.messager.alert("系统提示","执行失败!");
}
},"json");
}
});
} </script>
<title>Insert title here</title>
</head>
<body style="margin: 15px"> <table id="dg" title="客户流失暂缓措施管理" style="width:800px;height:250px"
toolbar="#toolbar" idField="id" rownumbers="true" fitColumns="true" singleSelect="true">
<thead>
<tr>
<th field="id" width="50">编号</th>
<th field="measure" width="300" editor="{type:'validatebox',options:{required:true}}">暂缓措施</th>
</tr>
</thead>
</table> <div id="toolbar">
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="javascript:$('#dg').edatagrid('addRow')">添加</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="javascript:$('#dg').edatagrid('destroyRow')">删除</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-save" plain="true" onclick="javascript:$('#dg').edatagrid('saveRow');$('#dg').edatagrid('reload')">保存</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-undo" plain="true" onclick="javascript:$('#dg').edatagrid('cancelRow')">撤销行</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-confirm" plain="true" onclick="javascript:confirmLoss()">确认流失</a>
</div>
</body>
</html>
edatagrid中定义了四个url属性,代表四种操作的请求路径,分别为url(列表查询url)、saveUrl(更新保存url)、updateUrl(新增保存url)、deleteUrl(删除url) 主要的controller实现:
/**
* 客户流失暂缓措施Controller层
* @author Administrator
*
*/
@Controller
@RequestMapping("/customerReprieve")
public class CustomerReprieveController { @Resource
private CustomerReprieveService customerReprieveService; /**
* 分页条件查询客户流失暂缓措施
* @param page
* @param rows
* @param s_customerReprieve
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/list")
public String list(@RequestParam(value="lossId",required=false)String lossId,HttpServletResponse response)throws Exception{
Map<String,Object> map=new HashMap<String,Object>();
map.put("lossId", lossId);
List<CustomerReprieve> customerReprieveList=customerReprieveService.find(map);
JSONObject result=new JSONObject();
JsonConfig jsonConfig=new JsonConfig();
jsonConfig.setExcludes(new String[]{"customerLoss"});
JSONArray jsonArray=JSONArray.fromObject(customerReprieveList,jsonConfig);
result.put("rows", jsonArray);
ResponseUtil.write(response, result);
return null;
} /**
* 添加或者修改客户流失暂缓措施
* @param customerReprieve
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/save")
public String save(CustomerReprieve customerReprieve,HttpServletResponse response)throws Exception{
int resultTotal=0; // 操作的记录条数
if(customerReprieve.getId()==null){
resultTotal=customerReprieveService.add(customerReprieve);
}else{
resultTotal=customerReprieveService.update(customerReprieve);
}
JSONObject result=new JSONObject();
if(resultTotal>0){
result.put("success", true);
}else{
result.put("success", false);
}
ResponseUtil.write(response, result);
return null;
} /**
* 删除客户流失暂缓措施
* @param ids
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/delete")
public String delete(@RequestParam(value="id")String id,HttpServletResponse response)throws Exception{
customerReprieveService.delete(Integer.parseInt(id));
JSONObject result=new JSONObject();
result.put("success", true);
ResponseUtil.write(response, result);
return null;
}
}
CustomerReprieveService(接口及实现类)主要实现:
/**
* 客户流失暂缓措施Service接口
* @author Administrator
*
*/
public interface CustomerReprieveService { /**
* 查询客户流失暂缓措施集合
* @param map
* @return
*/
public List<CustomerReprieve> find(Map<String,Object> map); /**
* 获取总记录数
* @param map
* @return
*/
public Long getTotal(Map<String,Object> map); /**
* 修改客户流失暂缓措施
* @param customerReprieve
* @return
*/
public int update(CustomerReprieve customerReprieve); /**
* 添加客户流失暂缓措施
* @param customerReprieve
* @return
*/
public int add(CustomerReprieve customerReprieve); /**
* 删除客户流失暂缓措施
* @param id
* @return
*/
public int delete(Integer id); }
/**
* 客户流失暂缓措施Service实现类
* @author Administrator
*
*/
@Service("customerReprieveService")
public class CustomerReprieveServiceImpl implements CustomerReprieveService{ @Resource
private CustomerReprieveDao CustomerReprieveDao; @Override
public List<CustomerReprieve> find(Map<String, Object> map) {
return CustomerReprieveDao.find(map);
} @Override
public Long getTotal(Map<String, Object> map) {
return CustomerReprieveDao.getTotal(map);
} @Override
public int update(CustomerReprieve customerReprieve) {
return CustomerReprieveDao.update(customerReprieve);
} @Override
public int add(CustomerReprieve customerReprieve) {
return CustomerReprieveDao.add(customerReprieve);
} @Override
public int delete(Integer id) {
return CustomerReprieveDao.delete(id);
} }
接下来是dao层实现:
/**
* 客户流失暂缓措施Dao接口
* @author Administrator
*
*/
public interface CustomerReprieveDao { /**
* 查询客户流失暂缓措施集合
* @param map
* @return
*/
public List<CustomerReprieve> find(Map<String,Object> map); /**
* 获取总记录数
* @param map
* @return
*/
public Long getTotal(Map<String,Object> map); /**
* 修改客户流失暂缓措施
* @param customerReprieve
* @return
*/
public int update(CustomerReprieve customerReprieve); /**
* 添加客户流失暂缓措施
* @param customerReprieve
* @return
*/
public int add(CustomerReprieve customerReprieve); /**
* 删除客户流失暂缓措施
* @param id
* @return
*/
public int delete(Integer id); }
因为采用的是mybatis进行ORM映射,所以不必手动写sql,主要映射文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.CustomerReprieveDao"> <resultMap type="CustomerReprieve" id="CustomerReprieveResult">
<result property="id" column="id"/>
<result property="measure" column="measure"/>
<association property="customerLoss" column="lossId" select="com.dao.CustomerLossDao.findById"></association>
</resultMap> <select id="find" parameterType="Map" resultMap="CustomerReprieveResult">
select * from t_customer_reprieve
<where>
<if test="lossId!=null and lossId!='' ">
and lossId = #{lossId}
</if>
</where>
<if test="start!=null and size!=null">
limit #{start},#{size}
</if>
</select> <select id="getTotal" parameterType="Map" resultType="Long">
select count(*) from t_customer_reprieve
<where>
<if test="lossId!=null and lossId!='' ">
and lossId = #{lossId}
</if>
</where>
</select> <insert id="add" parameterType="CustomerReprieve">
insert into t_customer_reprieve values(null,#{customerLoss.id},#{measure})
</insert> <update id="update" parameterType="CustomerReprieve">
update t_customer_reprieve
<set>
<if test="measure!=null and measure!='' ">
measure=#{measure},
</if>
</set>
where id=#{id}
</update> <delete id="delete" parameterType="Integer">
delete from t_customer_reprieve where id=#{id}
</delete> </mapper>
jquery.edatagrid(可编辑datagrid)的使用的更多相关文章
- jQuery EasyUI教程之datagrid应用
		一.利用jQuery EasyUI的DataGrid创建CRUD应用 对网页应用程序来说,正确采集和管理数据通常很有必要,DataGrid的CRUD功能允许我们创建页面来列表显示和编辑数据库记录.本教 ... 
- 2、easyUI-创建 CRUD可编辑dataGrid(表格)
		在介绍这节之前,我们先看一下效果图: 双击可以进入编辑 
- jQuery EasyUI教程之datagrid应用-2
		二.DataGrid的扩展应用 上一份教程我们创建的一个CRUD应用是使用对话框组件来增加或编辑用户信息.本教程将教你如何创建一个CRUD 数据表格(datagrid). 为了让这些CRUD功能正常工 ... 
- jQuery EasyUI教程之datagrid应用(三)
		今天继续之前的整理,上篇整理了datagrid的数据显示及其分页功能 获取数据库数据显示在datagrid中:jQuery EasyUI教程之datagrid应用(一) datagrid实现分页功能: ... 
- jQuery EasyUI教程之datagrid应用(二)
		上次写到了让数据库数据在网页datagrid显示,我们只是单纯的实现了显示,仔细看的话显示的信息并没有达到我们理想的效果,这里我们丰富一下: 上次显示的结果是这样的 点击查看上篇:jQuery Eas ... 
- jQuery EasyUI教程之datagrid应用(一)
		最近一段时间都在做人事系统的项目,主要用到了EasyUI,数据库操作,然后抽点时间整理一下EasyUI的内容. 这里我们就以一个简洁的电话簿软件为基础,具体地说一下datagrid应用吧 datagr ... 
- 实战Jquery(二)--能够编辑的表格
		今天实现的是一个表格的样例,通过获取表格的奇数行,设置背景色属性,使得奇偶行背景色不同.这个表格能够在单击时编辑,回车即更改为新输入的内容;ESC还原最初的文本.表格的实现思路非常清晰,仅仅是在实现的 ... 
- 基于layui,Jquery 表格动态编辑 设置 编辑值为 int 或者 double 类型及默认值
		首先先推荐大家在看这篇笔记时,阅读过我写的这篇 Layui表格编辑[不依赖Layui的动态table加载] 阅读过上面那篇笔记之后呢,才能更好的理解我现在所要说的这个东西 接下来废话不多说,上代码. ... 
- jQuery EasyUI编辑DataGrid用combobox实现多级联动
		我在项目中设计课程表的时候需要用到老师和分类之间的多级联动. 首先是一张效果图: 下面是实现的代码: <body> <script type="text/javascrip ... 
随机推荐
- 将yum源更换为阿里的源(脚本)
			#!/bin/bash ######################################### #Function: update source #Usage: bash update_s ... 
- SP16549 QTREE6 - Query on a tree VI(LCT)
			题意翻译 题目描述 给你一棵n个点的树,编号1~n.每个点可以是黑色,可以是白色.初始时所有点都是黑色.下面有两种操作请你操作给我们看: 0 u:询问有多少个节点v满足路径u到v上所有节点(包括)都拥 ... 
- Metasploit Penetration Testing
			1.Metasploit整体框架: Shell中直接输入msfconsole启动PostgreSQL数据库服务 :service postgresql start 监听5432端口初始化Metaspl ... 
- Linx 的组管理和权限管理
			Linux组基本介绍 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件 有所有者.所在组.其它组的概念. 1) 所有者 2) 所在组 3) 其它组 4) 改变用户所在的组 ... 
- Android Fragment原理及应用
			1.Fragment简介 Fragment(片段) 表示 Activity 中的行为或用户界面部分.您可以将多个片段组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity 中 ... 
- python学习,day2:利用列表做购物车实例
			一个购物车 # coding=utf-8 # Author: RyAn Bi import sys , os goods = [['iphone',5800],['mate20pro',5000],[ ... 
- Mike
- 解决VS在高DPI下设计出的Winform程序界面变形问题
			在目前高分屏流行的情况下,windows缩放与布局仍然设置为100%就显得太小(特别是笔记本),通常会调整为125%或150%, VS在缩放与布局设置为非100%的时候,就会自动启动DPI感知模式,以 ... 
- PIE SDK Command&&Tool工具命令一览表
			PIE SDK Command&&Tool工具命令一览表 编号 模板 名称(中文) Command&Tool 程序集 备注 1 数据管理 加载栅格数据 PIE.Controls ... 
- nginx基础学习第二篇:nginx内置变量的使用
			ngx_http_core模块提供的内置变量有很多,常见的有 $uri,用来获取当前请求的uri,不含请求参数. $request_uri,用来获取请求最原始的uri,包含请求参数,且未解码. $re ... 
