easyui行编辑:利用append row添加行,直接在行中编辑,ajax提交保存

2024-06-02 18:48

本文主要是介绍easyui行编辑:利用append row添加行,直接在行中编辑,ajax提交保存,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天工作用到了easyui行编辑,在这里总结一下,不会的同学可以看看,顺便吐槽一下,网上的很多博客都是粘贴复制的,内容很乱 ,而且看不懂,不知道这些粘贴复制的怀的是什么心,不但没用,还影响别人搜索。
呼吁大家在写博客的时候认真一些,别只粘贴复制,至少可以自己运行好了贴上自己的代码和一点感想,对别人用处很大的。

好了,正题开始——>

我用的是easyui 1.4

效果如下:
点击添加按钮,在第二行的位置添加新行,点击单元格输入内容,点保存通过ajax提交。
修改则直接点击单元格修改,点保存提交。
这里写图片描述
这里写图片描述
这里写图片描述

代码如下:
首先table还是平常的table,只不过要在需要编辑的列加上editor:'text' 我这里只是编辑文本,所以是text,其他时间等类型请查api,
另外因为我触发修改的方式是直接点击单元格,所以table要加上onClickCell属性,然后重写onClickCell方法。

$("#remark_dg").datagrid({url:'',columns:[[ {field:'cb',checkbox:true,align:'center'},{field:'id',title:'编号',width:80,hidden:true},{field:'text',title:'内容',width:80,editor:'text'}]],toolbar:'#remark_tb',  //表格菜单fit:true,fitColumns:true,loadMsg:'加载中...', //加载提示rownumbers:true, //显示行号列singleSelect:true,//是允许选择一行onClickCell: onClickCell,queryParams:{   //在请求数据是发送的额外参数,如果没有则不用写},onLoadSuccess:function(data){},rowStyler:function(index,row){}});

简单说明下可编辑的实现方法:
首先通过beginEdit让选中的行启动编辑,保存的时候,获得选中的行,通过row取到编辑的信息,使用ajax提交,提交完成,使用endEdit属性结束行编辑。

 //可编辑行var editIndex = undefined;function endEditing(){if (editIndex == undefined){return true}if ($('#remark_dg').datagrid('validateRow', editIndex)){$('#remark_dg').datagrid('endEdit', editIndex);editIndex = undefined;return true;} else {return false;}}function onClickCell(index, field){if (editIndex != index){if (endEditing()){$('#remark_dg').datagrid('selectRow', index).datagrid('beginEdit', index);var ed = $('#remark_dg').datagrid('getEditor', {index:index,field:field});($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus();editIndex = index;} else {$('#remark_dg').datagrid('selectRow', editIndex);}}}function accept(){if (endEditing()){var row = $('#remark_dg').datagrid('getSelected');var text = row.text;var remarkid = row.id;var typeid = $("#typeid").val();$.ajax({url:"${ctx}/typeRemark/addTypeRemark.do",type:"post",dataType:"json",data:{remarkid:remarkid,text:text,typeid:typeid},success:function(data){if(data.status == "success"){$.messager.show({title : '提示',msg : '操作成功'});$('#dg').datagrid('load', {});}else{$.messager.show({title : '提示',msg : '操作失败,请联系管理员 ------'});}},error:function(){$.messager.show({title : '提示',msg : '系统错误,请联系管理员------'});}});}}function addRemark(){function addRemark(){if (editIndex != undefined){return ;}$('#remark_dg').datagrid('insertRow',{index: 1,   // 索引从0开始row: {text:''}});$('#remark_dg').datagrid('selectRow', 1);$('#remark_dg').datagrid('beginEdit', 1);var ed = $('#remark_dg').datagrid('getEditor', {index:1,field:'text'});$(ed.target).focus();editIndex = 1;}}

这里有必要提一下,我的添加和修改方法用了一个方法accpet(),同时后台也用一个方法处理的,有需要的可以借鉴一下:
表现层用的是spring mvc,持久成用的hibernate:

@RequestMapping(value = "/addTypeRemark.do",method = RequestMethod.POST)@ResponseBodypublic Map<String,String> addTypeRemark(String text,String typeid,@RequestParam(value = "remarkid", required = false)Integer remarkid,HttpServletRequest request){Map<String,String>  map = new HashMap<String,String> ();System.out.println(typeid);try {BatchType batchType=batchTypeMag.find(Integer.parseInt(typeid));TypeRemark typeRemark = new TypeRemark();if(remarkid!=null){typeRemark = typeRemarkMag.find(remarkid);}typeRemark.setBatchType(batchType);typeRemark.setText(text);typeRemarkMag.saveOrUpdate(typeRemark);map.put("status","success");} catch (Exception e) {e.printStackTrace();map.put("status","fail");}return map;}

也就是说,添加的时候,没有这条记录的id,修改的时候需要通过记录的id修改,所以可以判断一下。

这样,easyui动态编辑行就完成啦

========================================================================================================

分割线
========================================================================================================
上次写的这个行编辑还是有点问题的,就是没有验证,而且添加的时候没有获取到焦点。所以这里修改一下:
1.editor类型改为textbox,因为text不支持easyui的验证

columns:[[ {field:'id',title:'编号',width:80,hidden:true},{field:'text',title:'内容',width:80,editor:{type:'textbox',options:{required:true,validType:'length[0,30]', invalidMessage:'不能超过30个字!'}}}]],

2.添加获取焦点:

function addRemark(){if (editIndex != undefined){return ;}$('#remark_dg').datagrid('insertRow',{index: 0,   // 索引从0开始row: {text:''}});$('#remark_dg').datagrid('selectRow', 0);$('#remark_dg').datagrid('beginEdit', 0);var ed = $('#remark_dg').datagrid('getEditor', {index:0,field:'text'});$(ed.target).textbox('textbox').focus(); editIndex = 0;}

3.添加撤销操作:

function reject(){$('#remark_dg').datagrid('rejectChanges');editIndex = undefined;}
<a href="javascript:reject()" class="easyui-linkbutton" data-options="iconCls:'icon-undo',plain:true" >取消</a>

这篇关于easyui行编辑:利用append row添加行,直接在行中编辑,ajax提交保存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1024787

相关文章

ccp之间是不可以直接进行+,-的,要用ccpSub和ccpAdd。

1.  http://www.cnblogs.com/buaashine/archive/2012/11/12/2765691.html  上面有好多的关于数学的方面的知识,cocos2dx可能会用到的 2.学到了   根据tilemap坐标得到层上物体的id int oneTiled=flagLayer->tileGIDt(tilePos);

把Tiled中做出的地图弄到项目中~~就是懒,为了以后直接复制写过来

1.现在.h中声明private: cocos2d::CCSprite* ninja; cocos2d::CCTMXTiledMap*  tileMap; 然后.cpp中加入tileMap = CCTMXTiledMap::create("MyTileMap.tmx"); CCTMXLayer* backLayer = tileMap->layerNamed("Tile L

设置android返回键,保存和取得最高分

1.在.h中声明一些方法 virtual void keyBackClicked();           //Android返回键 bool isHaveSaveFile(); void getHighestHistoryScore(); 在.cpp中实现这个几个方法 void WelcomeLayer::keyBackClicked(

直接得到Json串,转换为字典

0.新创建一个json文件,把json串拷贝到里面 1.先通过MainBundle找到资源对应的路径 2.将文件转换为NSData 3.通过NSJSonSerization得到字典 NSString*fileName=[[NSBundle mainBundle] pathForResource:@"myJson" ofType:@"json"];           NS

Ajax及其工作原理

Ajax及其工作原理 AJAX 是一种与服务器交换数据无需刷新网页的技术,最早由Google公司在谷歌地图里使用,并迅速风靡。 AJAX是不能跨域的,如需跨域,可以使用document.domain='a.com';或者使用服务器代理,代理XMLHttpRequest文件 AJAX是基于现有的Internet标准,并且联合使用它们: XMLHttpRequest 对象 (异步的与服

使用Sublime Text 2编辑CoffeeScript

Sublime Text 2很好很强大,咱就用它来编辑Coffee代码吧。 安装Sublime Text 2过程就略过了。   CoffeeScript作者是推荐使用TextMate编辑CoffeeScript的。但是TextMate收费,并且对中文支持不好。如果你不在意这两个问题,那么强烈推荐你使用TextMate,并关注CoffeeScript作者的TextMate

将知乎专栏文章转换为 Markdown 文件保存到本地

一、参考内容 参考知乎文章`代码 | 将知乎专栏文章转换为 Markdown 文件保存到本地,利用代码为GitHub:https://github.com/chenluda/zhihu-download。 二、步骤 1.首先安装包flask、flask-cors、markdownify 2. 运行app.py 3.在浏览器中打开链接,并填写URL和Cookies 获取Cookies的步

用Ps将PSD切片并将切片保存为透明背景的图片

第一步:选择放大镜工具或者Ctrl++将要切片的部分放大。 第二步:选择移动工具单击要切片的部分,在右边的图层栏找到要切片的图层在文字上右键选择转换为智能对象,再右键该图层的文字选择栅格化图层。 第三步:单击选中所要切片的部分,然后Ctrl+A、Ctrl+C、Ctrl+N(背景内容选择透明)、Ctrl+V、Ctrl+S(将文件保存为PNG格式),这样就可以得到透明背景的图片了!

在浏览器中打开预览sublime text当前所编辑文件的方法和快捷键设置

配置在Chrome,Firefox中打开 安装 SideBarEnhancements 然后通过ctrl + k, ctrl + b打开侧边栏,在侧边栏的文件中右击,找到 open width -> edit applications 然后在这里边设置firefox打开的方式。 application : 路径要修改为自己默认安装的路径。 [     {