`
uule
  • 浏览: 6358833 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

jQueryEasyUi行编辑打造增删改查

 
阅读更多

问题:

直接删除后,已删除行下面所有行的Index可能不正确,所以我的解决方法是新增时定义一个当前时间Id,然后每次点击后面的操作按钮时,jQuery获取当前行Id,然后selectRecord获得当前行真实Index

 

注意:需为Datagrid定义IdField,否则selectRecord不会起作用,很坑爹的问题...



 

var $obj;
$(function() {
	$obj = $("#configQueryGrid");
	$obj.datagrid({
		loadMsg : '数据加载中请稍后……',
		url : root + 'esbService/sysConfigQuery.do',
		//url : root + 'js/app/sysManagement/sysConfig.json',
		fitColumns : true,
		autoRowHeight : true,
		pagination : true,
		pagePosition : 'bottom',
		pageSize : 10,
		toolbar: '#configTb',
		pageList : [ 10, 20, 30 ],
		border : false,
		singleSelect:true,
		idField:'id',
		columns : [ [ {
				field : 'id',
				title : 'ID',
				hidden : true
			},{
				field : 'configName',
				title : "标识",
				width : 200,
				editor : 'text',
				sortable : true
			}, {
				field : 'configNameCn',
				title : "名称",
				editor : 'text',
				width : 200,
				sortable : true
			}, {
				field : 'configType',
				title : "类型",
				editor : 'text',
				width : 200,
				sortable : true
			}, {
				field : 'configValue',
				title : "值",
				editor : 'text',
				width : 200,
				sortable : true
			}, {
				field : 'opt',
				title : "详情",
				width : 150,
				align : 'center',
				formatter:function(value,row,index){
	                if (row.editing){
	                    var s = '<a href="#" class="ope-save" onclick="saverow('+index+',this)">保存</a> ';
	                    var c = '<a href="#" class="ope-cancel" onclick="cancelrow('+index+',this)">取消</a>';
	                    return s+c;
	                } else {
	                    var e = '<a href="#" class="ope-edit" onclick="editrow('+index+',this)">修改</a> ';
	                    var d = '<a href="#" class="ope-remove" onclick="deleterow('+index+',this)">删除</a>';
	                    return e+d;
	                }
	            }
		} ] ],
		onLoadSuccess : function(data) {

		},
		onBeforeEdit:function(index,row){
	        row.editing = true;
	        $obj.datagrid('refreshRow', index);
	    },
	    onAfterEdit:function(index,row){
	        row.editing = false;
	        $obj.datagrid('refreshRow', index);
	    },
	    onCancelEdit:function(index,row){
	        row.editing = false;
	        $obj.datagrid('refreshRow', index);
	    }
	});

});

	function selectCurRow(obj){
		var $a = $(obj);
		var $tr = $a.parent().parent().parent();
		var tmpId = $tr.find("td:eq(0)").text();
		$obj.datagrid('selectRecord', tmpId);
	}
	
	function getIndexAfterDel(){
		var selected = $obj.datagrid('getSelected');
		var index = $obj.datagrid('getRowIndex', selected);
		return index;
	}
	
	function editrow(index,obj){
		selectCurRow(obj);
		
		var tmpIndex = getIndexAfterDel();	
	    $obj.datagrid('beginEdit', tmpIndex);
	}
	
	function deleterow(index,obj){
	    $.messager.confirm('Confirm','确认删除?',function(r){
	        if (r){	        	
	        	selectCurRow(obj);
	        	var index = getIndexAfterDel();
	        	var node = $obj.datagrid('getSelected');
	        	var id = node.id; 
	        	$.ajax({
	    			url : root + 'esbService/removeSysConfig.do?id='+id,
	    			type : 'GET',	    			
	    			timeout : 60000,
	    			success : function(data, textStatus, jqXHR) {	
	    				var msg = '删除';
	    				if(data == 'pageData') {
	    					$obj.datagrid('deleteRow', index);
	    					return;
	    				}else if (data == "success") {
	    					$obj.datagrid('deleteRow', index);
	    		            //$obj.datagrid('reload');
	    					$.messager.alert('提示', msg + '成功!', 'info', function() {
	    						//window.location.href = root + 'esbService/initSysConfig.do';
	    					});
	    				} else {
	    					$.messager.alert('提示', msg + '失败!', 'error', function() {
	    						//window.location.href = root + 'esbService/initSysConfig.do';
	    					});
	    				}
	    			}
	    		}); 
	            
	        }
	    });
	}
	function saverow(index,obj){
	    selectCurRow(obj);
		var tmpIndex = getIndexAfterDel();	
		$obj.datagrid('endEdit', tmpIndex);
	    var node = $obj.datagrid('getSelected');
	    //var data = JSON.stringify(node);
	    var json = {};
	    json.id = node.id;
	    json.configName = node.configName;
	    json.configNameCn = node.configNameCn;
	    json.configType   = node.configType;
	    json.configValue  = node.configValue;
	    $.ajax({
			url : root + 'esbService/editOrSaveSysConfig.do',
			type : 'POST',
			data : json,
			timeout : 60000,
			success : function(data, textStatus, jqXHR) {	
				var msg = '';
				if (data == "success") {
					$.messager.alert('提示', '保存成功!', 'info', function() {
						$obj.datagrid('refreshRow', tmpIndex);
					});
				} else{
					if(data == "illegal"){
						msg = "请输入数据!";
					}else if(data == "duplicate"){
						msg = "该标识已存在!";
					}else{
						msg = "保存失败!";
					}
					$.messager.alert('提示', msg , 'error', function() {
						$obj.datagrid('beginEdit', tmpIndex);
					});
				}					

			}
		});
	    
	}
	function cancelrow(index,obj){
	    selectCurRow(obj);
		var tmpIndex = getIndexAfterDel();	
	    $obj.datagrid('cancelEdit', tmpIndex);
	}
	
	function appendRow(){
		$obj.datagrid('appendRow',{
			id: new Date().getTime(),
			configName: '',
			configNameCn: "",
			configType: "",
			configValue:"",
			opt:""
		});
		
		var length = $obj.datagrid("getRows").length;
		if(length > 0){
			editIndex = length - 1;
		}else{
			editIndex = 0;
		}		
		//$obj.datagrid("selectRow", editIndex);
		$obj.datagrid("beginEdit", editIndex);
	}
	
	

 

/*
	 * 全局设置
	 */
	@RequestMapping(value = "esbService/editOrSaveSysConfig.do", method = RequestMethod.POST)
	@ResponseBody
	public String editOrSaveSysConfig(SysConfig sysConfig) {
		if(sysConfig == null) return null;
		String message = "";
		try{
			message = sysConfigDS.editOrSaveSysConfig(sysConfig);
		}catch(Exception e){
			return "fail";
		}
		
		return message;
	}
	
	@RequestMapping(value = "esbService/removeSysConfig.do", method = RequestMethod.GET)
	@ResponseBody
	public String removeSysConfig(@RequestParam Long id) {
		if(id == null) return null;
		SysConfig es = sysConfigDS.getSysConfigById(id);
		String message = "";
		
		if(null != es){			
			try{
				sysConfigDS.remove(id);
				message = "success";	
			}catch(Exception e){
				return "fail";
			}
		}else{
			message = "pageData";
		}
			
		return message;
	}

 

public Boolean isIllegalData(SysConfig sys){
		if(StringUtils.isBlank(sys.getConfigName())
				|| StringUtils.isBlank(sys.getConfigType())
				|| StringUtils.isBlank(sys.getConfigValue())){
			return true;
		}
		return false;
	}
	
	public Boolean checkSysConfigExist(String name){
		SysConfig es = getSysConfigByName(name.trim());
		if(es != null) return true;
		return false;
	}
	
	@Override
	@Transactional
	public String editOrSaveSysConfig(SysConfig sysConfig) {
		SysConfig es = getSysConfigById(sysConfig.getId());
		String message = "";
		if(isIllegalData(sysConfig)){
			message = "illegal";
		}else{
			if(null == es){//判断是否新增
				if(checkSysConfigExist(sysConfig.getConfigName())){
					message = "duplicate";
				}else{
					sysConfig.setId(null);
					save(sysConfig);
					message = "success";
				}
			}else{//更新
				SysConfig dbEs = getSysConfigByName(sysConfig.getConfigName().trim());
				if(checkSysConfigExist(sysConfig.getConfigName())
						&& es.getId() != dbEs.getId()){
					message = "duplicate";
				}else{
					update(sysConfig);
					message = "success";
				}
			}
		}
		
		return message;
	}

 That's all .

 

 Jquery easyui 可编辑表格的保存方法
{
				id : 'btnsave',
				text : '保存',
				disabled : true,
				iconCls : 'icon-save',
				handler : function() {
					if (lastEditIndex != undefined) {
						$('#tt').datagrid('endEdit', lastEditIndex);
					}

    				var insertRows = $('#tt').datagrid('getChanges','inserted');
    				var updateRows = $('#tt').datagrid('getChanges','updated');
    				var deleteRows = $('#tt').datagrid('getChanges','deleted');
    				var changesRows = {
    	    				inserted : [],
    	    				updated : [],
    	    				deleted : [],
    	    				};
   		if (insertRows.length>0) {
			for (var i=0;i<insertRows.length;i++) {
				delete insertRows[i].editing;
				changesRows.inserted.push(insertRows[i]);
			}
		}

		if (updateRows.length>0) {
			for (var k=0;k<updateRows.length;k++) {
				delete updateRows[k].editing;
				changesRows.updated.push(updateRows[k]);
			}
		}
		
		if (deleteRows.length>0) {
			for (var j=0;j<deleteRows.length;j++) {
				delete deleteRows[j].editing;
				changesRows.deleted.push(deleteRows[j]);
			}
		}

   					alert(JSON.stringify(changesRows));


   					// 保存成功后,可以刷新页面,也可以:
					$('#tt').datagrid('acceptChanges');
					
					// 并且禁止保存、还原按钮
					$('#btnsave').linkbutton('disable');
					$('#btnreject').linkbutton('disable');
				}
			}

 JQuery EasyUI datagrid 批量编辑和提交

 

 

参考:

jquery-easyui 中表格的行编辑功能

学习Jquery EasyUI的添加,修改,删除,查询等基本操作

JQueryEasyUI学习笔记(十)datagrid 添加、修改、删除

 jquery-easyui中表格的行编辑功能(javaeye)
 

 jQuery Easyui的datagrid可编辑,多列之间的级联操作

 当Product Id列的值改变的时候,把当前列List Price的值设置成2012.

{
					field : 'productid',
					title : 'Product ID',
					width : 120,
					formatter : productFormatter,
					editor : {
						type : 'combobox',
						options : {
							valueField : 'productid',
							textField : 'name',
							data : products,
							required : true,
							onChange : function (newValue, oldValue) {
                //重点在此处 
                //先获取到当前选中行
                //根据当前行获取,当前行的下标
                //在根据下标和要获取列的filed获取对应filed的Editor对象
                //然后在根据对应的Editor操作
								var row = $dg.datagrid('getSelected');
								var rindex = $dg.datagrid('getRowIndex', row);
								var ed = $dg.datagrid('getEditor', {
										index : rindex,
										field : 'listprice'
									});
								$(ed.target).numberbox('setValue', '2012');
							}
						}
					}

 。。

 

 

  • 大小: 25.1 KB
分享到:
评论
2 楼 y1051200 2016-02-16  
[b][i][i][u]
引用
[list]
[*][img][url][flash=200,200][*][*]
[/flash][/url][/img] [/list]
[/quote[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]][/u][/i][/i][/b]
1 楼 jiancaixing 2014-06-19  
写得非常棒,对我很有帮助,谢谢!

相关推荐

    联表查询增删改查利用easyui做界面

    本文将深入探讨如何利用联表查询进行数据的增删改查,并结合EasyUI创建用户友好的界面,提升工作效率。 首先,我们要理解什么是联表查询。在SQL语言中,联表查询(也称为JOIN查询)允许我们从多个相关表中检索数据...

    jquery-easyui-1.3.5

    4. **表单(Form)**:用于数据输入和验证,可与表格结合使用,实现数据的增删改查。 5. **菜单(Menu)**:创建下拉或级联菜单,便于组织和访问功能项。 6. **按钮(Button)**:包括普通按钮、复选按钮、单选按钮...

    jQueryEasyUI中文API教程

    6. **表单(Form)**:用于收集用户输入,可以和Grid配合实现数据的增删改查。 7. **窗口(Window)**:类似对话框,但更加灵活,可以自由移动和调整大小。 8. **布局(Layout)**:提供了分割面板,可以将页面划分为多...

    Jquery easyui1.2 官方离线文档

    通过绑定数据源,可以轻松实现数据的增删改查。 3. 菜单(Menu) 菜单组件允许开发者创建多级下拉菜单,方便用户进行导航操作。它可以与按钮、链接等元素结合,提供丰富的交互体验。 4. 表单(Form) 表单组件...

    jquery-easyui-1.2 版本

    例如,开发者可以通过简单的配置实现数据的增删改查,同时可以定制化列宽、行样式等,提升用户体验。 3. **Tree组件** Tree 组件是用于展示层次结构数据的工具,常用于组织结构、目录结构等场景。在 jQuery EasyUI...

    jquery-easyui1.4.5含API中文

    5. **Form(表单)**:处理表单数据,与DataGrid结合使用,可实现数据的增删改查。 6. **其他组件**:如Layout(布局)、Accordion(手风琴)、Panel(面板)等,丰富了页面构建的可能性。 **API 使用指南** ...

    jquery-easyui-1.3.4

    2. **表格(Grid)**:用于展示大量数据,支持分页、排序、过滤和编辑,可以轻松实现数据的增删改查操作。 3. **表单(Form)**:提供了各种输入控件,如文本框、下拉列表、复选框和单选按钮,支持验证和提交,方便...

    jquery-easyui-1.2.3

    3. **表格(Grid)**:强大的数据展示工具,具备分页、排序、过滤、编辑等功能,能够与后台数据库无缝对接,实现数据的增删改查操作。 4. **菜单(Menu)**:构建多级下拉菜单,便于用户导航,同时支持鼠标悬停效果...

    EasyUI使用的demo

    2. **数据的增删改查**:EasyUI与后端数据交互时,通常会结合`datagrid`组件。`datagrid`不仅可以展示数据,还可以提供编辑、添加、删除和搜索等功能。在这个实例中,`datagrid`可能被用来显示数据库中的数据,并...

    ssm+easyUI整合案列

    9. **具体实践**:开发者可以通过模拟登录注册、数据展示、增删改查等常见功能来实践SSM+EasyUI的整合。例如,创建一个用户管理模块,使用EasyUI的表格组件显示用户列表,使用表单组件进行用户信息编辑,后台使用SSM...

    使用MVC+easyui

    通过以上介绍,我们可以看到MVC和EasyUI结合使用可以高效地实现Web应用的增删改查功能,同时保持代码结构清晰,易于维护。在实际开发中,还需要考虑性能优化、用户体验、前后端分离等因素,以打造高质量的应用。

    easyui帮助

    Form组件可以方便地处理表单数据,支持各种验证规则,与DataGrid配合可以实现数据的增删改查。通过`validatebox`可以对表单元素进行验证。 7. **主题和样式定制** EasyUI 提供了多种预设主题,如默认的"easyui"、...

    easyUI管理

    开发者可以通过简单的配置实现数据的增删改查操作,同时,它还支持异步加载数据,提高用户体验。 2. **表单组件(form)**:EasyUI的表单组件能够轻松地处理用户输入,支持各种验证规则,可以与后台服务进行数据...

    学生信息管理系统源代码

    在学生信息管理系统中,Hibernate简化了数据操作,使得对数据库的增删改查变得更加简单,同时也保证了数据的一致性和完整性。 再者,Spring3是全面的Java应用开发框架,它的核心特性包括依赖注入(DI)和面向切面...

    JEECG快速开发平台 v4.0

    技术点五:Online Coding在线开发(通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义表单布局) 技术点六:代码生成器,支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,...

    JEECG快速开发平台-其他

    Online Coding在线开发(通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义表单布局)技术点六:代码生成器,支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,JSP等,增删改...

Global site tag (gtag.js) - Google Analytics