- 浏览: 705688 次
- 性别:
- 来自: 福建
文章分类
最新评论
-
羽翼的心动:
同意2楼的说法,我们公司之前一个项目用过pageoffice, ...
poi导出excel文件工具类 -
贝塔ZQ:
poi实现导出excel文件,蛮麻烦的,用pageoffice ...
poi导出excel文件工具类 -
aishiqiang:
为什么我的项目配置好证书后,每次使用jenkinst自动构建包 ...
关于使用https协议,cas认证PKIX path building failed错误解决方法 -
zhongmin2012:
谢谢分享,正在想看
AST解析java源文件相关jar包 -
mybestroy1108:
感谢分享!受益良多!
Jboss7 JMS demo
好久没写点东西了,今天花了点时间整理了最近这段时间的ext应用开发, 分享分享!
通过Ext.Ajax.request来获取初始化数据或进行异步请求:
创建Ext.form.ComboBox:
window窗体封装:
封装了PanelWindow的表单基类BaseFormPanel:
例子:ImageUploadFormPanel继承了BaseFormPanel,并使用PanelWindow的openWindow方法打开窗体:
先看效果图:
实例化ImageUploadFormPanel:
同理,也可以将PanelWindow封装到Grid中,看一效果图:
Ext.tree.TreePanel中loader的使用(异步请求):通过beforeload事件对请求参数进行处理,通过processResponse 事件对请求成功后返回的数据进行处理并添加到当前树节点中。
通过Ext.Ajax.request来获取初始化数据或进行异步请求:
Ext.Ajax.request({ async : false, method : "post", url : URL_Index.getInitData, params : {}, success : function(response, opts) { try{ window.initJsonData = Ext.util.JSON .decode(response.responseText); }catch(e){ alert("初始化数据获取错误!"); } }, failure : function(response, opts) { alert("初始化数据获取失败!"); } });
创建Ext.form.ComboBox:
new Ext.form.ComboBox({ //fieldLabel : 'State', hiddenName : 'rparammap.managerType', editable : false, name : 'rparammap.managerType', store : new Ext.data.JsonStore({ id : 0, fields : ['stateCode', 'stateName'], data : [{"stateCode":"2","stateName":"普通用户"},{"stateCode":"1","stateName":"管理员"},{"stateCode":"0","stateName":"超级管理员"}] }), valueField : 'stateCode', displayField : 'stateName', typeAhead : true, allowBlank:false, mode : 'local', triggerAction : 'all', selectOnFocus : true }) })
window窗体封装:
/** * window 弹出窗体 * */ PanelWindow = function(config) { config = config || {}; Ext.applyIf(config, { loadMask: {msg: '正在加载数据......'}, columnLines : true, stripeRows : true, view: new Ext.grid.GroupingView({ autoFill: true, forceFit: true, showGroupName: true, enableNoGroups: false, hideGroupedColumn: true }) }); var vWidth=config.vWidth ? config.vWidth : 500; var vHeight = config.vHeight ? config.vHeight : 300; var vTitle = config.vTitle ? config.vTitle : "无标题"; var vIconCls = config.vIconCls ? config.vIconCls : ""; this.viewWindow = new Ext.Window({ layout:'fit', title : vTitle, iconCls : vIconCls, width:vWidth, height:vHeight, closeAction:'hide', plain: true, frame: true, modal: true, buttonAlign: 'center', items:config.formPanel }); PanelWindow.superclass.constructor.call(this, config); }; Ext.extend(PanelWindow, Ext.grid.GridPanel, { openWindow:function(){ this.viewWindow.show(); }, closeWindow: function(){ this.viewWindow.hide(); } });
封装了PanelWindow的表单基类BaseFormPanel:
/** * 表单基类 * * @type Form */ BaseFormPanel = function(config) { Ext.lib.Ajax.defaultPostHeader += '; charset=utf-8'; config = config || {}; Ext.applyIf(config, { loadParam : { id : 'id', field : 'id' }, varientParam : {} //变量参数 }); BaseFormPanel.superclass.constructor.call(this, config); this.viewWindow = new PanelWindow({ formPanel : this, vWidth : config.vWidth, vHeight : config.vHeight, vTitle : config.vTitle, vIconCls : config.vIconCls }); }; Ext.extend(BaseFormPanel, Ext.form.FormPanel, { state : 0, //设置变量参数 setVarientParam:function(v){ this.varientParam = v; }, //获得变量参数 getVarientParam:function(){ return this.varientParam; }, openWindow : function() { this.viewWindow.openWindow(); }, closeWindow : function() { this.viewWindow.closeWindow(); }, reset : function() { this.form.items.each(function(f) { if(!f.isVisible() || !f.isXType("displayfield")){ f.originalValue = ''; } }); this.form.reset(); }, /** * 加载数据失败 */ loadFailure : function(form, action) { if(action.result && action.result.msg){ Ext.Msg.alert('提示信息', action.result.msg); }else{ Ext.Msg.alert('提示信息', '数据加载失败!'); } }, submitFailure : function(form, action) { if(action.result && action.result.msg){ Ext.Msg.alert('提示信息', action.result.msg); }else{ Ext.Msg.alert('提示信息', '数据保存失败!'); } }, /** * 加载数据成功 */ loadSuccess : function(form, action) { }, submitSuccess : function(form, action) { this.state = 0; if (!this.isSaveAndAdd) { var task = new Ext.util.DelayedTask(function(){ //window.location.reload(); this.reload(); }); this.closeWindow(); Ext.example.msg('温馨提示', '操作成功!'); task.delay(2200); /* Ext.Msg.show({ title : '温馨提示', msg : '操作成功!', buttons : Ext.Msg.OK, fn : function() { window.location.reload(); }, animEl : 'elId', icon : Ext.MessageBox.OK }); */ // this.closeWindow(); } // this.grid.store.reload(); this.reset(); }, _success : function(form, action) { if (action.type === 'load') { this.loadSuccess(form, action); } else { this.submitSuccess(form, action); } }, _failure : function(form, action) { if (action.failureType == action.CLIENT_INVALID) if (action.result) { if (action.result.exception) { Ext.Msg.alert("错误提示", action.result.exception); return; } if (action.result.message) { Ext.Msg.alert("错误提示", action.result.message); return; } } if (action.type === 'load') { this.loadFailure(form, action); } else { this.submitFailure(form, action); } }, /** * 加载数据 */ loadData : function(options) { options = options || {}; // var record = this.grid.selModel.getSelected(); // var field = record.get(this.loadParam.field); // var params = Ext.util.JSON.decode("{'" + this.loadParam.id + // "' : '" + field + "'}"); Ext.applyIf(options, { method : 'post', url : this.loadUrl, // params: params, scope : this, success : this._success, failure : this._failure, waitTitle : this.loadWaitTitle || '请稍候', waitMsg : this.loadWaitMsg || '正在加载表单数据,请稍候...' }); this.form.load(options); this.state = 1; }, /** * 提交数据 */ submitData : function(options) { options = options || {}; this.isSaveAndAdd = options.isSaveAndAdd || false; Ext.applyIf(options, { params:{"annexSeq":this.annexSeq}, method : 'post', url : this.url, scope : this, timeout : 10, clientValidation : true, success : this._success, failure : this._failure, waitTitle : this.submitWaitTitle || '请稍候', waitMsg : this.submitWaitMsg || '正在保存表单数据,请稍候...' }); this.form.submit(options); } , /** * 更新数据 */ commitDate : function(options) { options = options || {}; this.isSaveAndAdd = options.isSaveAndAdd || false; Ext.applyIf(options, { method : 'post', url : this.url, scope : this, timeout : 10, clientValidation : true, success : this._success, failure : this._failure, waitTitle : this.submitWaitTitle || '请稍候', waitMsg : this.submitWaitMsg || '正在更新表单数据,请稍候...' }); this.form.submit(options); }, uploadData : function(options) { // alert(document.all.file.value) options = options || {}; this.isSaveAndAdd = options.isSaveAndAdd || false; Ext.applyIf(options, { method : 'post', url : this.uploadUrl, scope : this, //timeout : 10, clientValidation : true, success : function(form, action) { if(action.success){ //Ext.Msg.alert("温馨提示", "文件上传成功!"); Ext.example.msg('温馨提示', '文件上传成功!'); }else{ Ext.Msg.alert("温馨提示", "文件上传失败!"); } }, failure : function(form, action) { Ext.Msg.alert("温馨提示", "文件上传失败!") }, waitTitle : this.submitWaitTitle || '请稍候', waitMsg : this.submitWaitMsg || '正在上传数据,请稍候...' }); this.form.submit(options); } });
例子:ImageUploadFormPanel继承了BaseFormPanel,并使用PanelWindow的openWindow方法打开窗体:
先看效果图:
/** * 图片上传 */ ImageUploadFormPanel = function(config){ config = config || {}; Ext.applyIf(config, { //renderTo: 'fi-form', fileUpload: true, width: 500, frame: false, autoHeight: true, vHeight : 135, vWidth : 310, vTitle : "上传图片", bodyStyle: 'padding: 10px 10px 0 10px;', labelWidth: 40, defaults: { anchor: '95%', allowBlank: false, msgTarget: 'side' }, items: [{ xtype: 'textfield', emptyText: '请输入保存的名称(请勿使用中文名称)', name: 'saveName', fieldLabel: '名称' },{ xtype: 'fileuploadfield', emptyText: '请选择上传的图片', fieldLabel: '图片', name: 'image', buttonText: '', buttonCfg: { iconCls: 'upload-icon' } }], buttons: [{ text: '上传', handler: function(){ /* if(fp.getForm().isValid()){ fp.getForm().submit({ url: 'file-upload.php', waitMsg: 'Uploading your photo...', success: function(fp, o){ msg('Success', 'Processed file "'+o.result.file+'" on the server'); } }); } */ } },{ text: '重置', handler: function(){ //fp.getForm().reset(); } }] }); ImageUploadFormPanel.superclass.constructor.call(this, config); }; Ext.extend(ImageUploadFormPanel, BaseFormPanel, { });
实例化ImageUploadFormPanel:
imgUpload = new ImageUploadFormPanel({ buttons: [{ text: '上传', handler: function(){ if(imgUpload.getForm().isValid()){ imgUpload.getForm().submit({ url: URL_Fileupload.uploadImage, waitMsg: '正在上传...', success: function(iu, o){ Ext.example.msg('温馨提示', '上传成功!'); imgUpload.closeWindow(); imgUpload.getForm().reset(); chooser.store.load(); }, failure : function(iu, o){ Ext.Msg.alert('温馨提示', o.result.msg); } }); } } },{ text: '重置', handler: function(){ imgUpload.getForm().reset(); } }]});
同理,也可以将PanelWindow封装到Grid中,看一效果图:
Ext.tree.TreePanel中loader的使用(异步请求):通过beforeload事件对请求参数进行处理,通过processResponse 事件对请求成功后返回的数据进行处理并添加到当前树节点中。
new Ext.tree.TreeLoader({ preloadChildren: false, clearOnLoad: false, dataUrl : URL_Category.list, listeners : { beforeload : function(loader, node) { this.baseParams['rparammap.type'] = node.attributes['type']; if(node.attributes['pid'] == -1){ this.baseParams['rparammap.id'] = '0'; }else{ this.baseParams['rparammap.id'] = node.id; } } }, processResponse : function(response, node, callback) { var json = response.responseText; try { var o = Ext.decode(json).object; node.beginUpdate(); for (var i = 0, len = o.length; i < len; i++) { var n = this.createNode(o[i]); if (n) { node.appendChild(n); } } node.endUpdate(); if (typeof callback == "function") { callback(this, node); } } catch (e) { this.handleFailure(response); } } })
发表评论
-
解决EXT3 GridPanel 无法选中复制问题
2016-05-07 09:11 1251通过实践,删除gridPanel上指定class=" ... -
设置Ext.form.HtmlEditor默认源码编辑状态
2012-06-06 12:54 4290在处理Ext的HtmlEditor的时候,需要 ... -
Ext异步请求session过期解决方案
2011-01-14 12:13 5811最近在开发后台管理系统,前台使用了Ext框架,在开发过 ... -
分析ext之Panel的实例化过程
2010-05-14 10:17 2046首先我们来看下Panel的父类对象 Panel -> C ... -
浅析Ext为Function扩展的五个方法
2010-04-27 09:55 1358今天有兴趣查看了 ... -
ext 表单提交
2009-02-26 19:43 3459上个ext表单提交的例子,用servlet作为表单的服务器验证 ... -
解决Ext的中文乱码问题
2009-02-26 09:06 1725设置正确的Content-Type以解决Ext的中文乱码问题 ... -
ext布局:accordion and tree
2009-02-23 20:17 5639<html> <head> ... -
ext之border布局三
2009-02-23 20:14 4086<html> <head> ... -
ext之border布局二
2009-02-23 20:13 1554<html pageEncoding="u ... -
ext之border布局一
2009-02-23 20:11 1762<html pageEncoding="u ... -
ext之accordion布局
2009-02-23 20:07 2429<html> <head> < ...
相关推荐
脉脉的高级搜索标签,职位分类大全。 分类规则:顶级行业名称-->细分行业名称-->职业方向 - 金融业->银行业->(银行柜员、销售、理财经理/顾问、保险代理人、信贷业务、财务/审计/税务、基金经理、技术/研发、人力...
【脉脉和赤兔竞品分析】 脉脉与赤兔是中国市场上两款主要的职场社交应用,它们都旨在为用户提供一个专业交流的平台。然而,两者在产品定位、市场表现、功能设计以及商业化策略上存在显著差异。 1. 产品介绍: - ...
"脉脉标签布局"是一个特定的布局方案,模仿了知名职业社交应用脉脉中的个人标签展示方式。这个布局的主要特点是TextView的自适应功能,它可以根据内容自动换行,以适应不同的屏幕尺寸和文本长度,同时保持界面的整洁...
- **一线城市依然受青睐**:根据脉脉数据研究院的研究,北京、上海、深圳、广州和杭州是毕业生最热门的就业城市,短期内这种格局难以发生重大改变。 - **北方城市的新亮点**:青岛作为北方城市中的亮点之一,吸引了...
【标题】"ios-高仿脉脉、网易圈圈垂直缩放效果.zip"涉及的核心知识点是iOS应用开发中的用户界面动态效果实现,具体是模仿脉脉和网易圈圈App的垂直方向上的视图缩放效果。这个效果通常用于创建具有视觉吸引力的分段...
《2020脉脉招聘中高端人才趋势蓝宝书》是一份由中国领先的职业社交平台脉脉发布的报告,这份报告聚焦于2020年招聘市场上中高端人才的流动趋势、薪资分布、行业偏好等方面的数据和分析。尽管无法直接获取该报告的具体...
2018数字经济人才流动报告-信通院 脉脉.pdf
脉脉作为国内知名的职业社交平台,其发布的相关报告可能基于平台用户的互动数据和招聘信息进行分析。 接下来,基于这些信息,我们可以假设报告可能涉及以下知识点: 1. 人才定义与分类:报告可能会对“人才”进行...
脉脉-2019未来职场出行报告-2019.4-40页.pdf
这一现象反映了数字化转型对营销行业的影响之深。现代营销不再只是单一的广告宣传,而是需要依托于强大的数据支持和高新技术手段。数据分析师、数字营销专家等角色逐渐成为营销团队中不可或缺的一部分。他们的存在,...
营销策划 - 2020脉脉七周年“脉脉相传 解锁未来”活动策划方案.pptx
脉脉是一款旨在构建独特职场社交网络的应用,它与传统求职招聘工具有所不同,旨在通过强化社交关系来促进职场人士的互动。脉脉的核心功能是基于二度人脉关系进行连接,不仅帮助用户拓展职业人脉,还提供求职招聘、...
【产品分析报告】\n\n在传统职场社交环境中,脉脉凭借其独特的功能设计和市场策略,成功在竞争激烈的行业中脱颖而出。这份报告深入探讨了脉脉如何在职场社交领域独领风骚。\n\n首先,从产品功能架构来看,脉脉主要由...
脉脉是一款创新的求职招聘应用,它巧妙地融合了半匿名和半实名的特性,旨在利用二度人脉关系来解决求职与招聘过程中的信息不对称问题。该应用的核心理念是建立一个基于熟人推荐的社交网络,但同时考虑到了用户在求职...
【产品分析报告 - 传统职场社交环境下,脉脉如何独领风骚】 脉脉作为一款在传统职场社交环境中脱颖而出的应用,其成功在于精准地捕捉到了中国职场用户的需求,并提供了相应功能和服务。产品功能架构主要分为五个...
脉脉-向新而生:新能源行业观察报告2020-2021.4-24页.pdf