码迷,mamicode.com
首页 > Web开发 > 详细

Jquery easyui开启行编辑_增删改操作及新增就能编辑

时间:2016-07-14 15:35:59      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:

下面这个是一个单独的js文件,可以直接在页面引入他就可以用了

主要有三种方式实现编辑模式增删改操作

1.直接双击选中编辑

2.选中行点击修改按钮编辑

3.右键选择相关的操作

可能中间有部分功能没有实现

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>


<!-- 引入自定义的js文件 -->
<script type="text/javascript" src="${pageContext.request.contextPath}/js/Myutil.js"></script>

<script type="text/javascript">

var datagrid;
$(function() {

editRow = undefined ; //保存当前正在编辑的行,控制同一时间只开启一行

$('#datagrid').datagrid({
rowStyler : function(rowIndex,rowData){   //行样式
console.info(rowData.name);
if(rowData.name == '张三丰'){
return '';       //让张三丰这一行不显示样式
}
return 'background-color:#6293BB;  font-weight:bold; height:150px';
},
//url和columns属性必须要有
//后台响应数据的地址,返回JSON字符串来填充grid
url : '${pageContext.request.contextPath}/student/all',
title : '学生列表',
iconCls : 'icon-save',
pagination : true, //分页工具条 
pageSize : 10, //每页显示的大小,联合pageList一起用
pageList : [ 10, 20, 30, 40 ],
fit : true, //随着里里面的宽高自适应
fitColumns : false, //设置成true填充满整个grid的宽,列多时设置为false,grid太窄时有横向滚动条
nowarp : false, //一行内容太长时可以自动换行全部显示出来
border : false,
idField : 'id', //通过主键找到对应的记录
sortName : 'name', //默认用name来进行排序
sortOrder : 'desc', //排序的种类 
frozenColumns: [ [ {   //冻结列,此时fitColumns不能设置成true,否则没有效果
title : '',
field : '',
width : 50 ,  //json对象返回的属性要对应
checkbox : true  //在前面有个选项框
}, {  
title : '编号',
field : 'id', 
 //json对象返回的属性要对应
width : 100,  //必须给,否则列不显示
sortable : true , //设置在哪里表示可以用此列排序 
align : 'center'   //让编号列居中显示
  }] ],
columns : [ [ {

title : '用户名',
field : 'name',
width : 200,
align : 'center' ,
sortable : true ,  //设置在哪里表示可以用此列排序
editor : {        //让用户名列变成可编辑且数据必填
type : 'validatebox' ,   //让编辑框变成那种样
options : {
required : true
}
},
//当类容较长时,鼠标移上去将全部显示出来,此函数必须要换回一个字符串,返回的字符串替换当前的值
formatter : function(value,rowData,rowIndex){ 

//height可以设置列高
return '<div  style="height:50px" title="'+value+'">'+value+'</div>';  //利用html方式实现
}
} ,  {
title : '密码',
field : 'password',
width : 200 ,
editor : {        
type : 'validatebox' ,  
options : {
required : true
}
} ,
formatter : function(value,rowData,rowIndex){ 
return '******';  //将密码用*显示
} ,  
align : 'center' 
}, {
title : '创建时间',
field : 'createtime',
width : 200,
sortable : true ,  
editor : {        
type : 'datetimebox' ,   //自定义的类型
options : {
required : true
}
} ,
align : 'center'   
} , {
title : '操作',
field : 'cz',
width : 130,
formatter : function(value,rowData,rowIndex){ 
return '<button onclick="show('+rowIndex+');">编辑</button><button>删除</button>';
},
align : 'center'

}] ], //用两个中括号可以合并单元格
toolbar : [ { //添加一排按钮
text : '增加',
iconCls : 'icon-add',
handler : function() {
if(editRow != undefined ){
$('#datagrid').datagrid('endEdit',editRow);   //避免同时开启多个编辑行
}
if(editRow == undefined){
/*$('#datagrid').datagrid('appendRow',{   //在当前页末尾添加一行
id : 'ww' ,
name : '' ,
password : '' ,
createtime : ''
});
var rows = $('#datagrid').datagrid('getRows');  //得到当前页的所有行
$('#datagrid').datagrid('beginEdit',rows.length - 1 );   //让添加的这一行开启编辑状态,索引从0开始  
*/
//调用自己添加的方法,让添加用户时密码可以编辑,创建时间不可编辑
changeEditorAddRow();

$('#datagrid').datagrid('insertRow',{
index : 0 ,    //添加到第一行
row : {
name : '请输入用户名' ,
password : '请输入密码' ,
createtime : '请选择时间'
}
});
$('#datagrid').datagrid('beginEdit' ,0);  //让添加的第一行开启编辑状态
editRow = 0 ; //记录当前编辑行的索引
}
}

}, '-', {
text : '删除',
iconCls : 'icon-remove',
handler : function() {
var rows = $('#datagrid').datagrid('getSelections');   //得到所选择的行
if(rows.length > 0){
$.messager.confirm('请确认','您确定要删除当前所选中的项目吗?',function(b){
if(b){
var ids = [] ;//传给后台的id集合
for(var i = 0;i < rows.length; i++){
ids.push(rows[i].id);  //拼接所选中的id
}
$.ajax({
url : '${pageContext.request.contextPath}/student/delete' ,
data : {
ids : ids.join(',')   //将数组转换成一个以逗号分割的字符串传给后台
},
type : 'post',
dataType : 'json' ,
success : function(r){
if(r && r.flag){

$('#datagrid').datagrid('load'); //删除后刷新页面
$('#datagrid').datagrid('unselectAll'); //避免系统还在选中状态,下次删除新的数据出错
$.messager.show({
title : '提示',
msg : r.msg
});
}else{
$.messager.alert('错误','删除失败' ,'error');
}
}
});
}
});
}else{
$.messager.alert('提示','请选择要删除的记录','warning');//这里提示一个警告
}
}

}, '-', {
text : '修改', //'-',是一个分隔符
iconCls : 'icon-edit',
handler : function() {
var rows = $('#datagrid').datagrid('getSelections');  //得到所选择的行
if(rows.length == 1){
changeEditorEditRow();

if(editRow != undefined ){   //先判断双击前有没有在编辑的行
$('#datagrid').datagrid('endEdit',editRow);   //避免同时开启多个编辑行
}
if(editRow == undefined){
var index =  $('#datagrid').datagrid('getRowIndex' ,rows[0]);//得到选择行的索引  
$('#datagrid').datagrid('beginEdit' ,index); 
editRow = index ;   //记录当前开启编辑的行
//在开启编辑状态时取消它的选择状态,这样就可以在修改时放弃修改当前行去修改其他行
$('#datagrid').datagrid('unselectAll');  
} 
}
}

}, '-', {
text : '保存', //'-',是一个分隔符
iconCls : 'icon-save',
handler : function() {
$('#datagrid').datagrid('endEdit',editRow);
}

}, '-' , {
text : '取消编辑', //'-',是一个分隔符
iconCls : 'icon-redo',
handler : function() {
editRow = undefined ;
$('#datagrid').datagrid('rejectChanges'); //调用回滚方法
$('#datagrid').datagrid('unselectAll');
}

}, '-', {
text : '清空dataGrid', //'-',是一个分隔符
iconCls : 'icon-undo',
handler : function() {
$('#datagrid').datagrid('loadData',[]);
}

} ],

onAfterEdit : function(rowIndex,rowData,changes){   //在提交编辑行后自动执行事件,自动封装数据
//console.info(rowData);  //rowData刚结束编辑的哪一行数据,返回的是一个数组
//console.info(changes);  //changes是改变的数据
var inserted = $('#datagrid').datagrid('getChanges','inserted'); //得到插入的数据
var updated = $('#datagrid').datagrid('getChanges','updated');  //得到修改的数据
//即没有选择添加也没有选择修改就直接return结束,不往下面走了  不然url提交地址为空
if(inserted.length < 1 && updated.length < 1){
editRow = undefined ;
datagrid.datagrid('unselectAll');
return ;        
}

var url = '';
if(inserted.length > 0){  //表示点击的添加按钮
url = '${pageContext.request.contextPath}/student/insert' ;
}
if(updated.length > 0){  //表示点击的添加按钮
url = '${pageContext.request.contextPath}/student/update' ;
}
$.ajax({
url : url ,
data : rowData ,
dataType : 'json' ,
success : function(r){
if(r && r.flag){
$('#datagrid').datagrid('acceptChanges');  //后台添加成功后,前台保持同步,即不能"反悔"
$('#datagrid').datagrid('load'); //添加后刷新页面
$.messager.show({
msg : r.msg ,
title : '成功'
});
}else{
$('#datagrid').datagrid('rejectChanges');  //添加失败自动取消编辑框,回滚到前一个状态
$.messager.alert('错误', r.msg ,'error');
}
editRow = undefined ;
$('#datagrid').datagrid('unselectAll'); //取消选中,避免出现黄色条
}
});
//console.info(inserted);
//console.info(updated);

},

//直接双击修改
onDblClickRow : function(rowIndex,rowData){  //双击行触发事件
changeEditorEditRow(); //调用方法

if(editRow != undefined ){   //先判断双击前有没有在编辑的行
$('#datagrid').datagrid('endEdit',editRow);   //避免同时开启多个编辑行
}
if(editRow == undefined){
$('#datagrid').datagrid('beginEdit' ,rowIndex);  
editRow = rowIndex ; //记录当前编辑行的索引
}
},

//datagrid的右键事件,右键显示一个菜单,三个参数是事件自带的
onRowContextMenu : function(e, rowIndex, rowData){
e.preventDefault();  //阻止浏览器右键默认的事件
$(this).datagrid('unselectAll');   //先取消所有的选中,避免同一时间右键选中多行
$(this).datagrid('selectRow',rowIndex);  //选中右键的这一行
$('#menu').menu('show', {
    left : e.pageX,   //让菜单位置跟着鼠标位置的改变而移动
    top : e.pageY
});
}
});

//调用Myutil的方法将form表单元素的值序列化成对象,否则传过去的是字符串
sel = function(){
student_searchForm = $('#student_searchForm').form();
console.info(serializeObject(student_searchForm));
$('#datagrid').datagrid('load',serializeObject(student_searchForm));
};

//清空
cle = function(){
$('#datagrid').datagrid('load',{});  //此时后台接受到的过滤条件为空,将显示全部的数据
student_searchForm = $('#student_searchForm').form().find('input').val('');
};

//添加行时改变editor,password可编辑,创建时间不可编辑
changeEditorAddRow = function(){
$('#datagrid').datagrid('addEditor',{    
field : 'password' ,  //名称需要对应
editor : {       
type : 'validatebox' ,   //让编辑框变成那种类型
options : {
required : true
}
}
});
//让创建时间不可编辑,多个时用数组['createtime',''....]
$('#datagrid').datagrid('removeEditor','createtime');
};

//修改行时改变editor,密码不可编辑,创建时间开启可编辑状态
changeEditorEditRow = function(){
$('#datagrid').datagrid('removeEditor','password');
$('#datagrid').datagrid('addEditor',{    
field : 'createtime' ,  
editor : {       
type : 'datetimebox' ,   //自定义的类型
options : {
required : true
}
}
});
};
//$('.datagrid-header div').css('textAlign','center');  //让表头居中
});

//点击控制列的编辑按钮执行的方法
function show(i){
console.info(i);
var rows =  $('#datagrid').datagrid('getRows'); //得到当前页的所有行的数据,是一个数组
console.info(rows[i]);  //得到第i+1行的那么属性值
}



</script>
<div class="easyui-tabs" fit="true" border="false">
<div title="学生管理" border="false">
<div class="easyui-layout" fit="true" border="false">

<div region="north" title="过滤查询" border="false" style="height:100px;overflow:hidden;">
<form id="student_searchForm">
<table class="tableForm datagrid-toolbar" style="width:100%;height:100%">
<tr style="width:100px;">
<th >用户名</th>
<td><input id="name" name="name" style="width:150px;"/></td>
</tr>
<tr>
<th>创建时间</th> <!-- editable="false"表示不能手动输入信息 -->
<td>
<input name="createtimeStart" class="easyui-datetimebox" editable="false" style="width:100px;"/>至
<input name="createtimeEnd" class="easyui-datetimebox" editable="false" style="width:100px;"/>
<a href="javascript:void(0);" class="easyui-linkbutton" onclick="sel();">查询</a>
<a href="javascript:void(0);" class="easyui-linkbutton" onclick="cle();">清空</a>
</td>
</tr>
</table>
</form>
</div>

<div region="center" border="false">
<table id="datagrid" ></table>
</div>

<!-- 右键弹出一个菜单需要先建立一个菜单 -->
<div id="menu" class="easyui-menu" style="width:120px; display:none;">
<div onclick="" iconCls="icon-add">增加</div>
<div onclick="" iconCls="icon-remove">删除</div>
<div onclick="" iconCls="icon-edit">编辑</div>
</div>

</div>
</div>
</div>

新增就能编辑:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>工艺流程</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<%@ include file="/WEB-INF/def/web/include/head.jsp"%>
</head>
<body class="easyui-layout" id="divform" style="display:none">
	<!-- 信息列表 -->
	<table id="dg" class="easyui-datagrid" style="width:100%" toolbar="#tb"
		rownumbers="true" singleSelect="true" idField="invtypeid"
		url="/cm/pub/tech/l">
		<thead>
			<tr>
				<th data-options="field:'techname',width:200"
					editor="{type:'textbox'}">工艺流程名称</th>
				<th data-options="field:'memo',width:200" editor="{type:'textbox'}">备注</th>
				<th data-options="field:'operupd',width:100" align="center"
					formatter="formatAction">操作</th>
			</tr>
		</thead>
	</table>
	<div id="tb">
		<a href="javascript:void(0)" target="_blank" class="easyui-linkbutton"
			iconCls="icon-add" plain="true" onclick="appendrow();">新增</a>
	</div>
	<!-- 删除对话框 -->
	<%@ include file="/WEB-INF/def/web/include/delmsg.jsp"%>
</body>
</html>
<script language="javascript">
	$('#divform').css("display", "");
	$("#dg").css("height", $(window).height());
	var delbillid;
	var delindex;
	//初始表格
	$('#dg').datagrid({
		onBeforeEdit : function(index, row) {
			row.editing = true;
			updateActions(index);
		},
		onAfterEdit : function(index, row) {
			row.editing = false;
			updateActions(index);
		},
		onCancelEdit : function(index, row) {
			row.editing = false;
			updateActions(index);
		}
	});
	function updateActions(index) {
		$('#dg').datagrid('updateRow', {
			index : index,
			row : {}
		});
	}
	//添加修改和删除
	function formatAction(value, row, index) {
		if (row.editing) {
			var e = "<a href='javascript:void(0)' onclick='saverow(" + index
					+ ")'>确认</a>  ";
			var d = "<a href='javascript:void(0)' onclick='cancelrow(" + index
					+ ")'>取消</a>";
			return e + d;
		} else {
			debugger;
			var e = "<a href='javascript:void(0)' onclick='editrow(" + index
					+ ")'>编辑</a>  ";
			var d = "<a href='javascript:void(0)' onclick='deleterow(\""
					+ row.invtypeid + "\")'>删除</a>";
			return e + d;
		}
	}
	//新增行即可编辑
	function appendrow() {
		$('#dg').datagrid('appendRow', {
			techid : ''
		});
		var rows = $('#dg').datagrid('getRows');
		$('#dg').datagrid('beginEdit',rows.length - 1 ); 
	}
	//开始编辑
	function editrow(index) {
		$('#dg').datagrid('beginEdit', index);
	}
	//编辑取消
	function cancelrow(index) {
		$('#dg').datagrid('cancelEdit', index);
	}
	//数据保存
	function saverow(index) {
		$('#dg').datagrid('endEdit', index);
		var row = $('#dg').datagrid('getData').rows[index];
		var techname = row.techname;
		//var memo = row.memo;
		if (techname == "") {
			$.messager.alert('提示信息', "请你填写工艺流程名称");
			return;
		}
		var rows1 = $('#dg').datagrid('getRows');
		var length = rows1.length;
		for (var i = 0; i < length - 1; i++) {
			var row2 = rows1[i];
			var _techname = undefined2empty(row2.techname);
			if (techname == _techname && index != i) {
				$.messager.alert('提示信息', "工艺流程名称不可以重复 请重新输入");
				editrow(index);
				return;
			}
		}
		//var para = "invtypeid="+undefined2empty(invtypeid)+"&invtypename="+invtypename;
		$.getJSON("/cm/pub/tech/s", function(data) {
			if (data.errcode == "") {
				$.messager.alert('提示信息', "保存成功!");
				row.invtypeid = data.list[0];
				if (data.list[1] != null) {
					row.invtypecode = data.list[1];
				}
				$('#dg').datagrid('reload', index);
			} else {
				$.messager.alert('提示信息', data.errmsg);
			}
		});
	}
	//数据删除
	function deleterow(billid) {
		var index = $('#dg').datagrid("getRowIndex", billid);
		if (billid == undefined) {
			$('#dg').datagrid('cancelEdit', index);
			$('#dg').datagrid('deleteRow', index);
			return;
		}
		delbillid = billid;
		delindex = index;
		$('#dlg').dialog('open');
		$('#dlg').html("确定要删除此记录吗?");
	}
	//删除选择
	function delexcute() {
		$('#dlg').dialog('close');
		$.getJSON("/cm/pub/tech/d?techid=" + delbillid, function(data) {
			if (data.errcode == "") {
				$.messager.alert('提示信息', "删除成功!");
				$('#dg').datagrid('deleteRow', delindex);
			} else {
				$.messager.alert('提示信息', data.errmsg);
			}
		});
	}
</script>
新增行编辑:

技术分享

另一种方式待验证:

appendRow后获取添加行的index,调用beginEdit

var index=$('#FlowList').datagrid('appendRow', {         
                FlowTypeName: 'new name',
                FlowTypeCode: 30                
            }).datagrid('getRows').length-1;
$('#FlowList').datagrid('beginEdit',index)


Jquery easyui开启行编辑_增删改操作及新增就能编辑

标签:

原文地址:http://blog.csdn.net/qq_16769857/article/details/51906717

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!