jQueryEasyUi行编辑打造增删改查

来源:互联网 发布:书剑恩仇录 知乎 编辑:程序博客网 时间:2024/06/03 21:28

问题:

直接删除后,已删除行下面所有行的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)@ResponseBodypublic 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)@ResponseBodypublic 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@Transactionalpublic 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');}}}

 。。