<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方法相关推荐

  1. 编写高质量代码:改善Java程序的151个建议 (第1章 Java开发中通用的方法和准则)

    第1章 Java开发中通用的方法和准则 The reasonable man adapts himself to the world;the unreasonable one persists in ...

  2. Effective Java:对于全部对象都通用的方法

    前言: 读这本书第1条规则的时候就感觉到这是一本非常好的书.可以把我们的Java功底提升一个档次,我还是比較推荐的.这里我主要就关于覆盖equals.hashCode和toString方法来做一个笔记 ...

  3. Effective Java:对于所有对象都通用的方法

    前言: 读这本书第1条规则的时候就感觉到这是一本很好的书,可以把我们的Java功底提升一个档次,我还是比较推荐的.这里我主要就关于覆盖equals.hashCode和toString方法来做一个笔记总 ...

  4. html是以一种通用的方法来,c++ 有一种通用的方法来使函数模板适应为多态函数对象吗?...

    我有一些功能模板,例如 template void foo(T); template void bar(T); // others 我需要将每一个传递给一种算法,它将被称为各种类型的算法. templ ...

  5. axios框架里面如何使用get,post,通用ajax方法请求。

    回到文章总目录 本篇文章介绍的内容为axios框架里面如何使用get,post,通用ajax方法请求. axios是目前前端ajax中最热门的工具库,是vue和react官方推荐的ajax工具包 作用 ...

  6. Linux系统中提示/usr/bin/ld: cannot find -lxxx错误的通用解决方法

    Linux系统中提示/usr/bin/ld: cannot find -lxxx错误的通用解决方法 参考文章: (1)Linux系统中提示/usr/bin/ld: cannot find -lxxx错 ...

  7. 设备管理器,其他设备,PCI数据捕获和信号处理控制器出现感很多未知设备感叹号,通用解决方法,以华为matebook为例

    问题的关键是找到对应的驱动. 通用解决方法: 打开设备管理器,找到未知设备,右键属性--详细信息--下拉列表找到硬件标识符Hardware Ids--复制第一行的ID--打开浏览器搜索相关内容,确定该 ...

  8. /usr/bin/ld: cannot find -lxxx错误的通用解决方法

    Linux系统中提示/usr/bin/ld: cannot find -lxxx错误的通用解决方法 在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息,代码如下: ...

  9. 防止ACCESS数据库被下载的一个通用解决方法:

    防止ACCESS数据库被下载的一个通用解决方法: 在IIS里面 Web站点的属性, 主目录=>配置=>应用程序影射=>添加 随便做一个0字节的dll 用来影射mdb文件. 明白了吧? ...

最新文章

  1. ug二次开发环境可以用c语言吗,NX二次开发(1):开发环境配置
  2. Ubuntu 卸载 Nvidia 驱动和安装最新驱动
  3. Office2013 分享
  4. PYG教程【三】对Cora数据集进行半监督节点分类
  5. javascript中setInterval,setTimeout的区别跟用法
  6. Pimple相关的源码
  7. sql server序列_在SQL Server中实现序列聚类
  8. CCF201703-2 学生排队(100分)
  9. xadmin可能是帮助我完成django网站的一大助力
  10. docker里面什么emule比较好_emule 服务器优先
  11. 最受程序员欢迎的深度学习框架出新版啦(文末留言赠书)
  12. ACP知识域四---团队绩效
  13. 4G/5G无人机/无人车/无人船 远程控制,FPV增程,APM/Pixhawk图传数传一体
  14. 【Linux】linux 查看服务器配置:核数和内存
  15. 科技公司产品专利申请介绍
  16. jmeter测试抓包
  17. powerbi使用说明_powerBI步骤
  18. 在程序大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
  19. ggplot2 保存图片字体错误问题
  20. 清华大学计算机学院校友网,轮椅上的清华博士毕业了,刷屏的还有她...

热门文章

  1. pandas 中文打印无法对齐_2天学会Pandas
  2. python网络爬虫 爬取新闻标题、时间、内容
  3. SAP License:SD与COPA集成
  4. SAP License:新总帐—Coding Block
  5. Linux-Shell编程之数组操作
  6. 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数...
  7. MySQL数据库“局部”乱码
  8. ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)
  9. [Windows核心编程]堆
  10. 徐中约与《中国近代史》 (zz)