- 浏览: 18609 次
- 性别:
- 来自: 广州
最新评论
-
myyugioh:
这样做的话还有一个问题就是,如果后台返回的只有ID,前台要显示 ...
ComboBoxCheckTree动态加载数据解决方案
本文转贴
extjsHacker.js ============= //Extjs 2.X //为grid ColumnModel 的renderer增加gridView的引用 // Ext.grid.GridView.prototype.doRender = function(cs, rs, ds, startRow, colCount, stripe){ var ts = this.templates, ct = ts.cell, rt = ts.row, last = colCount-1; var tstyle = 'width:'+this.getTotalWidth()+';'; // buffers var buf = [], cb, c, p = {}, rp = {tstyle: tstyle}, r; for(var j = 0, len = rs.length; j < len; j++){ r = rs[j]; cb = []; var rowIndex = (j+startRow); for(var i = 0; i < colCount; i++){ c = cs[i]; p.id = c.id; p.css = i == 0 ? 'x-grid3-cell-first ' : (i == last ? 'x-grid3-cell-last ' : ''); p.attr = p.cellAttr = ""; p.value = c.renderer(r.data[c.name], p, r, rowIndex, i, ds,this); p.style = c.style; if(p.value == undefined || p.value === "") p.value = " "; if(r.dirty && typeof r.modified[c.name] !== 'undefined'){ p.css += ' x-grid3-dirty-cell'; } cb[cb.length] = ct.apply(p); } var alt = []; if(stripe && ((rowIndex+1) % 2 == 0)){ alt[0] = "x-grid3-row-alt"; } if(r.dirty){ alt[1] = " x-grid3-dirty-row"; } rp.cols = colCount; if(this.getRowClass){ alt[2] = this.getRowClass(r, rowIndex, rp, ds); } rp.alt = alt.join(" "); rp.cells = cb.join(""); buf[buf.length] = rt.apply(rp); } return buf.join(""); } //extjs 2.x /** * 为combobox添加lookup * @param {} v * @param {} rec */ Ext.form.ComboBox.prototype.setValue = function(v,rec){ var text = v; if(this.valueField){ var r = this.findRecord(this.valueField, v); if(r){ text = r.data[this.displayField]; }else if(this.valueNotFoundText !== undefined){ text = this.valueNotFoundText; } } //添加lookup if (rec && this.record && text) { if(this.lookup){ for(var i = 0 ; i<this.lookup.length ; i++){ this.record.set(this.lookup[i][0],rec.get(this.lookup[i][1])); } } } this.lastSelectionText = text; if(this.hiddenField){ this.hiddenField.value = v; } Ext.form.ComboBox.superclass.setValue.call(this, text); this.value = v; }; //extjs 2.x /** * 为gridEditor添加行数据引用 * @param {} el * @param {} value */ Ext.grid.GridEditor.prototype.startEdit = function(el, value){ if(this.editing){ this.completeEdit(); } this.boundEl = Ext.get(el); var v = value !== undefined ? value : this.boundEl.dom.innerHTML; if(!this.rendered){ this.render(this.parentEl || document.body); } if(this.fireEvent("beforestartedit", this, this.boundEl, v) === false){ return; } //alert(this.field); this.startValue = v; this.field.record = this.record;//就加入这一行,让field中获得当前数据行 this.field.setValue(v); this.doAutoSize(); this.el.alignTo(this.boundEl, this.alignment); this.editing = true; this.show(); } //extjs 2.x Ext.lib.Ajax /** * 添加同步ajax * @param {} method * @param {} uri * @param {} callback * @param {} postData * @return {} */ Ext.lib.Ajax.syncRequest = function(method, uri, callback, postData) { var o = this.getConnectionObject(); if (!o) { return null; } else { o.conn.open(method, uri, false); if (this.useDefaultXhrHeader) { if (!this.defaultHeaders['X-Requested-With']) { this.initHeader('X-Requested-With', this.defaultXhrHeader, true); } } if(postData && this.useDefaultHeader && (!this.hasHeaders || !this.headers['Content-Type'])){ this.initHeader('Content-Type', this.defaultPostHeader); } if (this.hasDefaultHeaders || this.hasHeaders) { this.setHeader(o); } this.handleReadyState(o, callback); o.conn.send(postData || null); return o; } }; //extjs 2.x Ext.lib.Ajax /** * 添加同步ajax * @param {} method * @param {} uri * @param {} cb * @param {} data * @param {} options * @return {} */ Ext.lib.Ajax.request = function(method, uri, cb, data, options) { if(options){ var hs = options.headers; if(hs){ for(var h in hs){ if(hs.hasOwnProperty(h)){ this.initHeader(h, hs[h], false); } } } if(options.xmlData){ if (!hs || !hs['Content-Type']){ this.initHeader('Content-Type', 'text/xml', false); } method = (method ? method : (options.method ? options.method : 'POST')); data = options.xmlData; }else if(options.jsonData){ if (!hs || !hs['Content-Type']){ this.initHeader('Content-Type', 'application/json', false); } method = (method ? method : (options.method ? options.method : 'POST')); data = typeof options.jsonData == 'object' ? Ext.encode(options.jsonData) : options.jsonData; } } if ("sync" in options) return this.syncRequest(method, uri, cb, data); return this.asyncRequest(method, uri, cb, data); }; //extjs 2.x 自动重连 /** * Ext.Ajax.request({ url: 'foo.jsp', timeout:2, //重连次数 retryCount:3, //重连后要注意保存新的 newTransactionId retry:function(retryCount,newTransactionId){ alert('failture remain retry count :' + retryCount+'\n' +'newTransactionId : '+newTransactionId.tId); }, //最终的失败函数 failure: function(responseObject){ alert('failture finally :'+responseObject.statusText); }, headers: { 'my-header': 'foo' }, params: { foo: 'bar' } }); */ (function(){ //保存原来的调用代码 var oldRequest=Ext.lib.Ajax.request; //新的增强代码 Ext.lib.Ajax.request = function(method, uri, cb, data, options) { //没有配置就运行老代码 if(!options.retryCount) return oldRequest.call(Ext.lib.Ajax,method, uri, cb, data, options); //保存原来的失败处理函数 var oldFailure=cb.failure; //添加了自动重连的新的处理函数 cb.failure=function(responseObject){ options.retryCount--; if(options.retryCount) { //注意:自动重连后tId 变化 var newTransactionId = oldRequest.call(Ext.lib.Ajax,method, uri, cb,data, options); //调用重连回调函数 if(options.retry) { options.retry.apply(cb.scope||window, [options.retryCount,newTransactionId]); } } //重连够了,调用真正的失败函数。 else if(oldFailure){ oldFailure.apply(cb.scope||window, [responseObject]); } } //增强配置,再运行老代码 return oldRequest.call(Ext.lib.Ajax,method, uri, cb, data, options); } })(); //extjs 2.x /** * 为form添加当前数据record * @param {} values * @return {} */ Ext.form.BasicForm.prototype.setValues = function(values){ this.data = values; //添加数据引用,用于以后使用 if(Ext.isArray(values)){ // array of objects for(var i = 0, len = values.length; i < len; i++){ var v = values[i]; var f = this.findField(v.id); if(f){ f.setValue(v.value); if(this.trackResetOnLoad){ f.originalValue = f.getValue(); } } } }else{ // object hash var field, id; for(id in values){ if(typeof values[id] != 'function' && (field = this.findField(id))){ field.setValue(values[id]); if(this.trackResetOnLoad){ field.originalValue = field.getValue(); } } } } return this; } //Extjs 2.x Ext.FormPanel.prototype.initFields = function(){ var f = this.form; var formPanel = this; var fn = function(c){ if(c.isFormField){ c.form = formPanel; //为录入控件添加form的引用 f.add(c); }else if(c.doLayout && c != formPanel){ Ext.applyIf(c, { labelAlign: c.ownerCt.labelAlign, labelWidth: c.ownerCt.labelWidth, itemCls: c.ownerCt.itemCls }); if(c.items){ c.items.each(fn); } } } this.items.each(fn); } //Extjs 2.x Ext.FormPanel.prototype.beforeDestroy = function(){ var fn=function(c){ if (c.isFormField) { if(c.form) { c.form=null; delete c.form; } } if(c.items){ c.items.each(fn); } }; this.items.each(fn); Ext.FormPanel.superclass.beforeDestroy.call(this); this.stopMonitoring(); Ext.destroy(this.form); } Ext.override(Ext.form.BasicForm, { setReadOnly: function(bReadOnly){ this.items.each(function(f) { if (f.isFormField) { f.getEl().dom.readOnly = bReadOnly; // Remove click event handlers if (f instanceof Ext.form.TriggerField) { if (bReadOnly) f.trigger.un('click', f.onTriggerClick, f) else f.trigger.on('click', f.onTriggerClick, f, {preventDefault:true}); if (f instanceof Ext.form.ComboBox) //Alternatively, to check if combobox use: if (f.setEditable)... { if(f.view){ if (bReadOnly){ f.view.un('click', f.onViewClick, f) } else{ f.view.on('click', f.onViewClick, f); } } } } } }); } });
发表评论
-
解决IE8和火狐等浏览器的backspace键退回的问题
2014-02-19 15:11 5895好久没写点东西了,今天写个解决IE8和火狐等浏览器的backs ... -
对JS和一些小技巧总结
2011-02-27 16:47 694对JS和一些小技巧总结 ... -
优化JS的小总结
2010-09-10 16:09 1148优化JS主要为了网 ... -
ComboBoxCheckTree动态加载数据解决方案
2010-06-07 15:51 1735今天 研究了下ComboBoxCheckTree动态加载数据 ... -
页面FROM动态加载数据
2010-06-04 09:54 914页面FROM动态加载数据 想要在页面打开后显示后台的数据 ... -
extjs 技巧 笔记(转)
2010-06-02 08:54 1041extjs 技巧 笔记(转) http://yourgame. ... -
关于EXT中GRID各列查询的插件
2009-11-23 09:27 1249关于EXT中GRID各列查询的插件 使用方法: 1引入JS文 ...
相关推荐
EXT2文件系统是Linux操作系统中广泛使用的文件系统之一,它具有丰富的安全特性,其中包括扩展属性(attribute)。这些属性为系统管理员提供了额外的控制手段,以增强文件和目录的安全性及完整性。本文主要介绍EXT2...
以下是一些关于EXT自定义控件扩展的关键知识点: 1. **类继承**:EXT支持基于面向对象的编程,自定义控件通常通过继承EXT现有的基础控件类来实现。例如,如果你想要创建一个自定义的按钮,你可以从`Ext.button....
总结来说,Ext2Read是一个实用的工具,帮助Windows用户方便地访问和提取Linux EXT分区的数据,扩展了跨平台操作的可能性。不过,在使用过程中,用户应当遵循相应的安全规范,避免对数据造成不必要的损害。
2. **扩展 ComboBox 类**:lovcombo 需要继承EXTJS的ComboBox类,通过`Ext.extend`方法实现。 3. **配置模板**:lovcombo 的下拉列表需要一个新的模板来显示复选框。我们可以使用`tpl`配置项来定义一个包含复选框的...
详细介绍了ext2文件系统在内核中的布局,以及ext2的基本数据结构和功能介绍,同时详细的讲解了ext2文件系统中的扩展属性,从基本数据结构入手,剖析了关于扩展属性的详细操作流程。
在EXT JS中,`Ext Grid` 是一个强大...通过以上步骤,我们可以实现 `Ext Grid` 的动态扩展功能,使得在运行时可以根据需求灵活调整列的数量和内容,提高了用户体验。这在处理复杂且不断变化的数据展示场景时尤其有用。
这些代码涵盖了文件系统的创建、挂载、卸载、读写等基本功能,还包括了一些高级特性,如日志记录(journaling)的扩展EXT3和EXT4。 **学习EXT2源码的意义** 研究EXT2的源码能够帮助我们深入理解文件系统的底层工作...
标题中的"ext 下拉树 ext2"指的是使用Ext JS库构建的一个特定版本的下拉树组件,其中"ext2"可能表示使用的是Ext JS的2.x版本。Ext JS是一个强大的JavaScript框架,主要用于构建富客户端Web应用程序,它提供了一系列...
2. **组描述符表(Group Descriptor Table)**:EXT2将文件系统划分为多个组,每个组有自己的超级块副本、i节点表和块位图,便于管理和扩展。 3. **i节点(Inode)**:每个文件和目录在EXT2中都有一个i节点,包含了...
EXT4是Linux内核的第四代扩展文件系统,它在性能、可靠性和可扩展性方面有显著提升,尤其适合大型数据存储。 在Windows系统中,由于默认不支持EXT4格式,因此无法直接读取或挂载EXT4格式的硬盘。这时,EXT2explore...
**二、Ext扩展** ExtJS中的"扩展"通常指的是`Ext.override()`方法,它用于给现有的类添加新的方法或覆盖原有的方法,而无需创建新的类。这种机制在不改变原有类结构的情况下,提供了增强或定制已有功能的能力。 ...
Ext组件扩展包 - DateTime 是一个专门用于增强JavaScript应用程序中日期和时间处理能力的工具集。在Web开发中,尤其在创建交互式用户界面时,日期和时间选择器是不可或缺的一部分。此扩展包提供了美观且功能丰富的...
Ext2Fsd默认也不会将写操作打开,需要修改注册表文件Ext2fsd.reg,将WritingSupport改为00000001,另外要修改配置文件ext2fsd.inf,将里面WritingSupport改为1。重新导入注册表并启动服务,写操作就可以顺利完成了。...
EXT2是在1992年由Rémy Card开发的,主要为了解决当时Minix文件系统的一些限制。EXT2的主要特点包括: 1. **块组结构**:EXT2将硬盘划分为多个块组,每个组包含一定数量的数据块、索引节点块、超级块以及块位图和...
Linux的EXT2(第二扩展文件系统)是早期广泛使用的文件系统之一,特别是在嵌入式系统和Linux服务器上。EXT2的C语言实现是一项技术性极强的任务,涉及到对操作系统底层机制的理解,包括文件系统的结构、inode、超级块...
- **访问控制列表(Access Control Lists, ACLs)**:EXT2原生不支持ACL,但可以通过第三方扩展实现。 5. **日志模式** - **非日志化(Non-journaling)**:EXT2最初设计时不包含日志功能,因此对文件系统的恢复...
EXT2虽然在现代Linux发行版中逐渐被EXT3、EXT4和其它文件系统取代,但它仍然在一些旧系统或嵌入式设备中使用,了解其API对于系统管理员和开发者来说仍有一定的价值。通过这个CHM文件,用户可以深入学习EXT2的内部...
综上所述,fuse-ext2-0.0.7是Linux系统中一个重要的文件系统桥接工具,它扩展了Linux对EXT2和NTFS的支持,使得用户可以在Linux环境中无缝地挂载和管理这些非原生文件系统。通过FUSE的用户空间文件系统实现,它降低了...
1. **图形和符号**:ol-ext扩展了OpenLayers的基本图标和标记功能,引入了更多的图形元素,如箭头、圆形、正方形、星形等。这些图形可以用于表示特定的地理信息或增强地图的可视化效果。此外,还支持自定义SVG图形,...
总结来说,codePress Ext扩展的实现涉及到以下几个关键知识点: 1. EXTJS框架:理解EXTJS的组件化架构,掌握如何创建和配置EXT组件。 2. codePress编辑器:熟悉codePress的API,学习如何实现代码高亮、编辑功能和...