easyui datagrid rowediting使用心得
来源:互联网 发布:iphone自制铃声mac 编辑:程序博客网 时间:2024/05/22 06:02
前不久使用了easyui的tree,现如今换了项目组,居然整个页面都是使用easyui的,而今我写的模块需要rowediting,有了easyui-tree的使用,我多少对easyui有了一定的了解,在使用rowediting的时候也算的上是熟路,但是奈何框架是封装的框架,有好多规则需要遵守,最后无奈的发现我不是轻车了,可谓之“重车熟路”。
言归正传,使用easyui,必须要把其需要的js、css都准备好了,这个就不多说了,需要的官网上下载。在官网上给的demo中已经有的基本使用的发放了。调用方式如下代码:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Row Editing in DataGrid - jQuery EasyUI Demo</title><link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css"><link rel="stylesheet" type="text/css" href="../../themes/icon.css"><link rel="stylesheet" type="text/css" href="../demo.css"><script type="text/javascript" src="../../jquery.min.js"></script><script type="text/javascript" src="../../jquery.easyui.min.js"></script></head><body><h2>Row Editing in DataGrid</h2><div class="demo-info"><div class="demo-tip icon-tip"></div><div>Click the row to start editing.</div></div><div style="margin:10px 0;"></div><table id="dg" class="easyui-datagrid" title="Row Editing in DataGrid" style="width:700px;height:auto"data-options="iconCls: 'icon-edit',singleSelect: true,toolbar: '#tb',url: 'datagrid_data1.json',method: 'get',onClickRow: onClickRow"><thead><tr><th data-options="field:'itemid',width:80">Item ID</th><th data-options="field:'productid',width:100,formatter:function(value,row){return row.productname;},editor:{type:'combobox',options:{valueField:'productid',textField:'productname',url:'products.json',required:true}}">Product</th><th data-options="field:'listprice',width:80,align:'right',editor:{type:'numberbox',options:{precision:1}}">List Price</th><th data-options="field:'unitcost',width:80,align:'right',editor:'numberbox'">Unit Cost</th><th data-options="field:'attr1',width:250,editor:'text'">Attribute</th><th data-options="field:'status',width:60,align:'center',editor:{type:'checkbox',options:{on:'P',off:''}}">Status</th></tr></thead></table><div id="tb" style="height:auto"><a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-add',plain:true" onclick="append()">Append</a><a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true" onclick="removeit()">Remove</a><a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-save',plain:true" onclick="accept()">Accept</a><a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-undo',plain:true" onclick="reject()">Reject</a><a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-search',plain:true" onclick="getChanges()">GetChanges</a></div></body></html>至于工具栏的操作方式的js有很多种,其中我看着比较好的一种多行多种操作后同时提交的方法,这个是在网上查到的,具体地址找不到了,我就把代码贴下:
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Row Editing in DataGrid - jQuery EasyUI Demo</title> <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="../../themes/icon.css"> <link rel="stylesheet" type="text/css" href="../demo.css"> <script type="text/javascript" src="../../jquery.min.js"></script> <script type="text/javascript" src="../../jquery.easyui.min.js"></script></head><body><h2>Row Editing in DataGrid</h2><script type="text/javascript"> $(function () { var $dg = $("#dg"); $dg.datagrid({ url: "data.json", width: 700, height: 250, columns: [ [ { field: 'code', title: 'Code', width: 100, editor: "validatebox" }, { field: 'name', title: 'Name', width: 200, editor: "validatebox" }, { field: 'price', title: 'Price', width: 200, align: 'right', editor: "numberbox" } ] ], toolbar: [ { text: "添加", iconCls: "icon-add", handler: function () { $dg.datagrid('appendRow', {}); var rows = $dg.datagrid('getRows'); $dg.datagrid('beginEdit', rows.length - 1); } }, { text: "编辑", iconCls: "icon-edit", handler: function () { var row = $dg.datagrid('getSelected'); if (row) { var rowIndex = $dg.datagrid('getRowIndex', row); $dg.datagrid('beginEdit', rowIndex); } } }, { text: "删除", iconCls: "icon-remove", handler: function () { var row = $dg.datagrid('getSelected'); if (row) { var rowIndex = $dg.datagrid('getRowIndex', row); $dg.datagrid('deleteRow', rowIndex); } } }, { text: "结束编辑", iconCls: "icon-cancel", handler: endEdit }, { text: "保存", iconCls: "icon-save", handler: function () { endEdit(); if ($dg.datagrid('getChanges').length) { //获得增加数据 var inserted = $dg.datagrid('getChanges', "inserted"); //获得删除数据 var deleted = $dg.datagrid('getChanges', "deleted"); //获得修改数据 var updated = $dg.datagrid('getChanges', "updated"); var effectRow = new Object(); if (inserted.length) { effectRow["inserted"] = JSON.stringify(inserted); alert("insert:" + JSON.stringify(inserted)); } if (deleted.length) { effectRow["deleted"] = JSON.stringify(deleted); alert("delete:" + JSON.stringify(deleted)); } if (updated.length) { effectRow["updated"] = JSON.stringify(updated); alert("update:" + JSON.stringify(deleted)); } $.post("servlet/commit", effectRow,function (rsp) { if (rsp.status) { $.messager.alert("提示", "提交成功!"); $dg.datagrid('acceptChanges'); } }, "JSON").error(function () { $.messager.alert("提示", "提交错误了!"); }); } } } ] }); function endEdit() { var rows = $dg.datagrid('getRows'); for (var i = 0; i < rows.length; i++) { $dg.datagrid('endEdit', i); } } });</script><table id="dg" title="批量操作"></table></body></html></body></html>
以上是html和js代码,下来我大体的说下后台获取方式:
以增加为例://设置请求编码req.setCharacterEncoding("UTF-8");//获取json字符串String inserted = req.getParameter("inserted");if(inserted != null){//把json字符串转换成对象List<Bean> listInserted = JSON.parseArray(inserted, Bean.class); //TODO 你的操作。。。。。。}//bean,抽象前台数据为对象,public class Bean {private String code;private String name;private Double price;.....set get 方法省略}
这个应该可以看懂吧,如果有不懂的地方可以留言。这个是一种很好很快捷的提交数据方式。但是我由于一些特殊原因没法使用,所以下面我发下我的提交数据方式:
function update() {$('#dg').datagrid('beginEdit', editIndex);}function removeit() {if (editIndex == undefined) {return}var obj = $('#dg').datagrid('getRows')[editIndex];var id = obj["id"];if(id!=null&&id!=""){ $.messager.confirm("操作提示", "您确定要执行删除该属性吗?", function () {$('#dg').datagrid('deleteRow', editIndex);$('#classActionForm').form('submit',{url : 'deleteActionClass.cncc?id=' + id,onSubmit : function() {if ($(this).form("validate")) {} else {return false;}},success : function(data) {var temp = eval('(' + data + ')'); // change the JSON string to javascript object if (temp.success) {$.messager.alert('提示', "操作成功", 'info');$("#dg").datagrid({iconCls : 'icon-edit',singleSelect : true,toolbar : '#tb',url : 'getActionList.cncc?type=${fiatclass.name }&randnum='+Math.floor(Math.random()*1000000),loadMsg : '数据加载中请稍后……',method : 'get',onClickRow : onClickRow});//$("#dg").datagrid('reload');//重新加载} else {$.messager.alert("提示", "操作失败,失败原因:"+ temp.msg);}}});editIndex = undefined; });}else{ $('#dg').datagrid('rejectChanges');editIndex = undefined; }}function accept() {$('#dg').datagrid('acceptChanges');var obj = $('#dg').datagrid('getRows')[editIndex];var actionName = obj["actionName"];var actionRemark = obj["actionRemark"];var id = obj["id"];var displayed = obj["displayed"];/*if (displayed == "是") {displayed = 1;} else {displayed = 0;}*/var used = obj["used"];/*if (used == "是") {used = 1;} else {used = 0;}*/$('#classActionForm').form('submit',{url : 'saveClassAction.cncc?id='+ id+ "&actionName="+ actionName+ "&actionRemark="+ actionRemark+ "&displayed="+ displayed+ "&used="+ used+ "&classid=${fiatclass.id }&classname=${fiatclass.name }",onSubmit : function() {if ($(this).form("validate")) {} else {return false;}},success : function(data) {var temp = eval('(' + data + ')'); // change the JSON string to javascript object if (temp.success) {$.messager.alert('提示', "操作成功", 'info');$("#dg").datagrid({iconCls : 'icon-edit',singleSelect : true,toolbar : '#tb',url : 'getActionList.cncc?type=${fiatclass.name }&randnum='+Math.floor(Math.random()*1000000),loadMsg : '数据加载中请稍后……',method : 'get',onClickRow : onClickRow});//$("#dg").datagrid('reload');//重新加载} else {$.messager.alert("提示", "操作失败,失败原因:"+ temp.msg);$("#f-submit").linkbutton("enable");$("#f-cancel").linkbutton("enable");}}});}function reject() {$('#dg').datagrid('rejectChanges');editIndex = undefined;}
以上是我的提交数据的方式,我采用的方式单行数据提交,也就是每次新增或修改或删除都进行一次提交。至于后台获取数据的方式大家应该都知道,不过这里我多一句嘴:request.getParameter("name")来获取。
到了这里本来可以结束了,不过想到一个问题,在这个表单中,我们还是会遇到一个小问题,我在这里也说下。关于列表中的ID这一列数据,为了数据安全或者是没有展示的必要性,我们都不需要此列,但是修改的时候这个id值就是必不可少的一个东西,所以我们需要做到的是它即存在,又不可见,也就是隐藏起来,又啰嗦了,直接粘方法吧:
$(function(){$("#dg").datagrid({ onLoadSuccess:function(){ $('#dg').datagrid("hideColumn","id"); //$('#dg').datagrid("showColumn","id"); }});});其中hideColumn是隐藏方法,showColumn是将隐藏的展示出来,id是所隐藏的列。
0 0
- easyui datagrid rowediting使用心得
- EasyUi中datagrid使用心得
- Easyui.datagrid扩展——Ext.grid rowediting风格
- easyui datagrid列使用按钮的一些心得
- easyui datagrid列使用按钮的一些心得
- EasyUI使用心得——datagrid的条件查询,过滤
- easyui datagrid使用
- easyui datagrid使用
- easyUI datagrid使用
- EasyUI之DataGrid使用
- easyui datagrid使用
- EasyUI 之datagrid 使用
- easyui datagrid使用汇总
- EasyUI 之datagrid 使用
- easyui datagrid使用
- easyui datagrid使用
- jQuery EasyUI- DataGrid使用
- easyui datagrid使用
- VS2010 编译动态链接库
- 巧用Media SDK检查系统硬件加速
- Python的MySQL操作
- Linux C编程连载(4)-基于TCP/IP的文件传输系统
- [LeetCode]ZigZag Conversion
- easyui datagrid rowediting使用心得
- 关于C++中的拷贝构造和赋值重载的理解
- ArcGIS技术:将不小心移动的图斑放回原位置
- libgdx Preferences 使用
- JEECG-批量删除操作
- 1153
- 扩展Django:实现自己的manage命令
- GIS是怎样建成的之五:瓦片(Tile)
- eclipse主题与颜色主题的添加(实现黑色面板)