【原创】Extjs4 通用CURD方法
<script> /*** Author:xiaojiang* create_time: 2012-06-01* reason: 通用curd 方法* */ Ext.define("App.util.CommonDoActionUtil",{/*** Form添加信息 合并insert 和 update 功能* @parse form {} 对应form * @parse parse {}* parse.grid {} 要刷新的grid* parse.pk string 对应form的主键ID 默认为id* parse.callback function 执行后的回调函数* */doInsert:function(form,parseObj){if(!form){alert("Invalid arguments");return;}_form = form.getForm();if (_form.isValid()) {var pk = parseObj.pk || 'id'; //取得对应主键var type = form.getValues()[pk] ? 'update' :'insert';var url = parseObj.grid.getStore().getProxy().api[type];if(url == undefined) {console.dir('Invalid url'); return;}form.submit({url: url,submitEmptyText: false,waitMsg: '提交...',success: function(form, action) {var ret = eval('('+action.response.responseText+')');Ext.Msg.alert('提示', ret.message);form.reset();if(parseObj.grid != undefined) parseObj.grid.store.load();if(typeof (parseObj.callback) == 'function') parseObj.callback(_form); //调用回调函数 },failure: function(form, action) {var ret = eval('('+action.response.responseText+')');Ext.Msg.alert('提示', ret.message);}});}},// -- grid begin --/*** 删除grid 选择信息* @parse {} 对应grid* @parse {* .pk string 对应form的主键ID 默认为id* .Msg 1 是否 不显示弹出信息* }* */doDelete:function(grid,ParseObj){if(!grid){alert("Invalid arguments");return;}var pk = (ParseObj !=undefined && ParseObj.pk) ? ParseObj.pk : 'id'; //取得对应主键var Msg = (ParseObj !=undefined && ParseObj.Msg != undefined) ? ParseObj.Msg : '确定要删除此记录吗'; var store = grid.getStore(); //得到数据集合var records = grid.getSelectionModel().getSelection();var data = [];var Parse = {};Ext.Array.each(records,function(model){data.push(model.get(pk));});Parse[pk] = data.join(","); //存入参数if(data.length > 0){if(Msg){ //判断是否需要弹出确认框Ext.MessageBox.confirm("提示",Msg,function(btn){if(btn == 'yes'){Ext.Ajax.request({url:store.getProxy().api['remove'],params:Parse,timeout:4000,success:function(response,opts){var ret = eval("("+response.responseText+")");Ext.Msg.alert("提示", ret.message);grid.store.load();}})}});}else{Ext.Ajax.request({url:store.getProxy().api['remove'],params:Parse,timeout:4000,success:function(response,opts){var ret = eval("("+response.responseText+")");Ext.Msg.alert("提示", ret.message);grid.store.load();}}) //待优化 }}else{Ext.Msg.alert("提示", "请选择一条信息");}},/*** 树形删除操作* @param {} Tree 要操作的树* @param string pkv 唯一标识值* @param string pk 唯一标识pk*/doDeleteT: function(Tree,pkv,pk,callback){if(!Tree || !pkv) return;var me = this, param ={},url = Tree.getStore().getProxy().api['remove']; //得到数据集合param[pk] = pkv; //设置参数 Ext.Ajax.request({url: url,params: param,success: function(response , opt){var node = me.getNodeByPk(Tree,pkv,pk);var parentNode = node.parentNode;try{if(parentNode){parentNode.removeChild(node);if(!parentNode.getChildAt(0)){parentNode.data['leaf'] = true;parentNode.updateInfo({leaf:true});}}}catch(e){console.log(e);}if(typeof(callback) == 'function') callback(response); //执行回调函数var ret = eval("("+response.responseText+")");Ext.Msg.alert("提示",ret.message);}});},/*** 树形维护插入/更新操作* @param {} tree* @param {* pk : 主键id* pid : 父级标识(pid)* param : 插入/更细数据* callback: 回调函数(插入成功后的id)* }*/doInsertT: function(tree,paramObj){var me = this;if(!tree){alert("参数传递不正确");return;}var pk = paramObj.pk || 'id',parseObj = paramObj.param; //取得对应主键var type = parseObj[pk] ? 'update' :'insert'; //更新/插入数据 Ext.Ajax.request({url: tree.getStore().getProxy().api[type],params:parseObj,submitEmptyText: false,waitMsg: '提交...',success: function(res, action) {var ret = eval('('+res.responseText+')');var ret_arr = ret.message.split('-');if('update' == type){var Node = me.getNodeByPk(tree,parseObj[pk],pk);var _Node = Node;_Node.data = Ext.apply(_Node.data,parseObj);Node.parentNode.replaceChild(_Node,Node); //更新节点}else if('insert' == type){var pid = paramObj.pid || 'pid' ,pidVal = parseObj[pid];var parentNode = me.getNodeByPk(tree,pidVal,pk);var resObj = Ext.applyIf({id : ret_arr[1],text:parseObj["text"],leaf:true},parseObj);if(resObj[pk] == '') resObj[pk] = ret_arr[1]; // 当主键为返回型时if(parentNode){ // 判断是否有父级节点 try{parentNode.data['leaf'] = false;parentNode.updateInfo();//设置为parentNode 添加元素 parentNode.appendChild(resObj);parentNode.expand();}catch(e){console.dir(e);} }else{ //无父节点 ,即为根节点var rootNode = tree.getStore().getRootNode();rootNode.appendChild(resObj);}}Ext.Msg.alert('提示', ret_arr[0]);if(typeof (paramObj.callback) == 'function') paramObj.callback(ret_arr[1]); //调用回调函数 },failure: function(form, action) {var ret = eval('('+action.response.responseText+')');Ext.Msg.alert('提示', ret.message);}});},/*** 通过主键获取Node* @param {} treeObj* @param string pkv 主键值* @param string pk 主键标识*/getNodeByPk:function(tree,pkv,pk){if('id' == pk){ //默认pkvar Node = tree.getStore().getNodeById(pkv); }else{ //若不是id则循环查找节点for(i in tree.getStore().tree.nodeHash){if(pkv == tree.getStore().tree.nodeHash[i].data[pk]){Node = tree.getStore().tree.nodeHash[i];break;}}}return Node;}});</script>
思想是基于uspcat 的,改成自己项目需要的。。。
只要思路是把对grid 和Tree的操作封装到uitl 里面。类似java的Service 层 技术上不是很复杂。大家可以针对各自应用自行修改
使用方法:
<script> //在controller 的init 方法里添加 var me = this;me.DoAction = Ext.create('App.util.CommonDoActionUtil');//加载通用CURD //在对应的方法中调用'userListX button[id=delUser]':{click:function(o){var grid = o.ownerCt.ownerCt;me.DoAction.doDelete(grid);}} //删除用户 </script>
转载于:https://www.cnblogs.com/glory-jzx/archive/2012/07/09/2582535.html
【原创】Extjs4 通用CURD方法相关推荐
- 编写高质量代码:改善Java程序的151个建议 (第1章 Java开发中通用的方法和准则)
第1章 Java开发中通用的方法和准则 The reasonable man adapts himself to the world;the unreasonable one persists in ...
- Effective Java:对于全部对象都通用的方法
前言: 读这本书第1条规则的时候就感觉到这是一本非常好的书.可以把我们的Java功底提升一个档次,我还是比較推荐的.这里我主要就关于覆盖equals.hashCode和toString方法来做一个笔记 ...
- Effective Java:对于所有对象都通用的方法
前言: 读这本书第1条规则的时候就感觉到这是一本很好的书,可以把我们的Java功底提升一个档次,我还是比较推荐的.这里我主要就关于覆盖equals.hashCode和toString方法来做一个笔记总 ...
- html是以一种通用的方法来,c++ 有一种通用的方法来使函数模板适应为多态函数对象吗?...
我有一些功能模板,例如 template void foo(T); template void bar(T); // others 我需要将每一个传递给一种算法,它将被称为各种类型的算法. templ ...
- axios框架里面如何使用get,post,通用ajax方法请求。
回到文章总目录 本篇文章介绍的内容为axios框架里面如何使用get,post,通用ajax方法请求. axios是目前前端ajax中最热门的工具库,是vue和react官方推荐的ajax工具包 作用 ...
- Linux系统中提示/usr/bin/ld: cannot find -lxxx错误的通用解决方法
Linux系统中提示/usr/bin/ld: cannot find -lxxx错误的通用解决方法 参考文章: (1)Linux系统中提示/usr/bin/ld: cannot find -lxxx错 ...
- 设备管理器,其他设备,PCI数据捕获和信号处理控制器出现感很多未知设备感叹号,通用解决方法,以华为matebook为例
问题的关键是找到对应的驱动. 通用解决方法: 打开设备管理器,找到未知设备,右键属性--详细信息--下拉列表找到硬件标识符Hardware Ids--复制第一行的ID--打开浏览器搜索相关内容,确定该 ...
- /usr/bin/ld: cannot find -lxxx错误的通用解决方法
Linux系统中提示/usr/bin/ld: cannot find -lxxx错误的通用解决方法 在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息,代码如下: ...
- 防止ACCESS数据库被下载的一个通用解决方法:
防止ACCESS数据库被下载的一个通用解决方法: 在IIS里面 Web站点的属性, 主目录=>配置=>应用程序影射=>添加 随便做一个0字节的dll 用来影射mdb文件. 明白了吧? ...
最新文章
- ug二次开发环境可以用c语言吗,NX二次开发(1):开发环境配置
- Ubuntu 卸载 Nvidia 驱动和安装最新驱动
- Office2013 分享
- PYG教程【三】对Cora数据集进行半监督节点分类
- javascript中setInterval,setTimeout的区别跟用法
- Pimple相关的源码
- sql server序列_在SQL Server中实现序列聚类
- CCF201703-2 学生排队(100分)
- xadmin可能是帮助我完成django网站的一大助力
- docker里面什么emule比较好_emule 服务器优先
- 最受程序员欢迎的深度学习框架出新版啦(文末留言赠书)
- ACP知识域四---团队绩效
- 4G/5G无人机/无人车/无人船 远程控制,FPV增程,APM/Pixhawk图传数传一体
- 【Linux】linux 查看服务器配置:核数和内存
- 科技公司产品专利申请介绍
- jmeter测试抓包
- powerbi使用说明_powerBI步骤
- 在程序大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
- ggplot2 保存图片字体错误问题
- 清华大学计算机学院校友网,轮椅上的清华博士毕业了,刷屏的还有她...
热门文章
- pandas 中文打印无法对齐_2天学会Pandas
- python网络爬虫 爬取新闻标题、时间、内容
- SAP License:SD与COPA集成
- SAP License:新总帐—Coding Block
- Linux-Shell编程之数组操作
- 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数...
- MySQL数据库“局部”乱码
- ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)
- [Windows核心编程]堆
- 徐中约与《中国近代史》 (zz)