`
qinya06
  • 浏览: 600917 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ext (增 ,删,改 ,查,导出excel)

阅读更多
下面为扩张grid的 代码
/** 
* @auther qinya
* @class   Ext.ux.GridExtend 
* 通用的grid 
*/ 
Ext.ux.GridExtend=function(config){ 
    Ext.QuickTips.init(); 
    this.config=config;


    this.filters=this.config.filters||''; 
     
     
    /** 
     * @param {String} 
     * 显示列表的id 
     */ 
    this.el=this.config.el||document.body; 
    /** 
     * @param   {String} 
     * 读取编辑数据的form的url 
     */ 
    this.editUrl=this.config.editUrl; 
    /** 
     * @param   {String} 
     * 读取编辑数据的form的url 
     */ 
    this.deleteUrl=this.config.deleteUrl; 
    /** 
     * @param   {String} 
     * 读取列表数据的url 
     */ 
    this.storeUrl=this.config.storeUrl; 
    /** 
     * @param   {String} 
     * 保存添加到列表数据的url 
     */ 
    this.formSaveUrl=this.config.formSaveUrl; 
    /** 
     * @param   {String} 
     * 列表的标题 
     */ 
    this.title=this.config.title||''; 
    /** 
     * @param   {Array} 
     * 列表顶部状态栏 
     */ 
    this.tbar=this.config.tbar||[{//grid顶部栏位 
            text:'添加',                  //按钮的名称 
            tooltip:'添加数据',             //鼠标停留在按钮上的提示 
            iconCls:'add',                  //按钮图表的类 
            handler:this.newInfo.createDelegate(this)           //处理按钮被点击时触发的时间函数 
        },'-',{//'-'为多按钮间隔符 
            text:'删除',                  //删除按钮的名称 
            tooltip:'删除数据',             //鼠标停留在按钮上的提示 
            iconCls:'remove',               //按钮图表的类 
            handler:this.handlerDelete.createDelegate(this)         //处理按钮被点击时触发的时间函数 
        },'-',{ 
            text:'导出Excel',                 //删除按钮的名称 
            tooltip:'导出Excel',              //鼠标停留在按钮上的提示 
            iconCls:'exportExcel', 
            handler:this.exportExcel.createDelegate(this)           //处理按钮被点击时触发的时间函数 
        }];


    /** 
     * @param   选择框对象 
     */ 
    this.sm=this.config.sm||new Ext.grid.CheckboxSelectionModel({//start Ext.grid.CheckboxSelectionModel 
        singleSelect:false                  //是否只能选择一个 
    }); 
    /** 
     * @param   {Array} 
     * 列表的栏的前面数据 
     */ 
    this.cmDataArrayBefore=[//start Ext.grid.ColumnModel 
        //defaultSortable:true,             //默认情况下为排序 
        new Ext.grid.RowNumberer(),         //数据函数序列号 
        this.sm 
    ]; 
    /** 
     * @param   {Array} 
     * 显示的内容是从后台读取出来的数据,所以此数据中的dataIndex属性要与<br> 
     * 从后台读取的字段要一致 
     */ 
    this.cmDataArray=this.config.cmDataArray||[]; 
    /** 
     * @param   {Array} 
     * 列表的栏的后面数据 
     */ 
    this.cmDataArrayAfter=this.config.cmDataArrayAfter||[]; 
    /** 
     * @param   {Ext.grid.ColumnModel} 
     * 列表的栏位数据 
     */ 
    this.cm=this.config.cm||new Ext.grid.ColumnModel( 
            this.cmDataArrayBefore.concat(this.cmDataArray).concat(this.cmDataArrayAfter) 
    );//end Ext.grid.ColumnModel     
     
    /** 
     * @param   {Array} 
     * 读取gridStore数据的字段设置数据对象 
     */ 
    this.gridStoreFields=this.config.gridStoreFields||new Array(); 
     
    /* 
     * 如果this.gridStoreFields中没有数据,把this.cmDataArray中的dataIndex的属性值<br> 
     * 赋予gridStoreFields数组中对象的name属性值 
     */ 
    if(this.gridStoreFields.length==0){ 
        for(var i=0,len=this.cmDataArray.length;i<len;i++){ 
            this.gridStoreFields[i]={name:this.cmDataArray[i].dataIndex}; 
        } 
    } 
     
    /** 
     * @param   {new Ext.data.Store} 
     * 从后台读取的列表内容 
     */ 
    this.gridStore=this.config.gridStore||new Ext.data.Store({//start Ext.data.Store 
        proxy:new Ext.data.HttpProxy({ 
            url:this.storeUrl                   //读取数据的url 
        }), 
        reader:new Ext.data.JsonReader({//start Ext.data.JsonReader 
            root:'rows',                    //存储数据的属性 
            totalProperty:'results',        //总共的页数 
            id:'uniqueCode'                 //每行的id值 
        },                                  //end Ext.data.JsonReader 
        this.gridStoreFields) 
    });//end Ext.data.Store 
     
    this.gridStore.load({params:{start: 0, limit: 10}}); 
    /** 
     * @param   {Ext.PagingToolbar} 
     * 底部状态栏 
     */ 
    this.bbar=this.config.bbar||new Ext.PagingToolbar({     //在grid底层添加分页工具栏 
            pageSize:10,                    //显示的数据条数 
            store:this.gridStore,           //选择翻页按钮时的加载到grid的数据 
            displayInfo:true,               //设置是否显示分页栏的信息 
            displayMsg:'显示第 {0} 条到 {1} 条记录,一共 {2} 条',//消息栏的页数信息 
            emptyMsg:"没有记录"             //当没有记录时要显示的信息 
        });//end bbar 
    /** 
     * 如果要设置此参数必须在cm中设置相应的id 
     */ 
    this.autoExpandColumn=this.config.autoExpandColumn||''; 
         
    /** 
     * @param   {Object} 
     * 默认情况下有此显现,如果不需要可以为false 
     * 必须含有下列参数:<br> 
     * loadingEL        {String}    加载页面时显示的内容id<br> 
     * loadingMaskEl    {String}    渐显的内容id<br> 
     */ 
    this.loadingMark=this.config.loadingMark||{ 
        loadingEL:'loading', 
        loadingMaskEL:'loading-mask' 
    }; 
    /** 
     * @param   {Ext.grid.GridPanel} 
     * @private 
     */ 
    this.grid=this.config.gridStore||new Ext.grid.GridPanel({ 
        //el:this.el,                           //显示grid对象的层ID. 
        store:this.gridStore,                   // grid装载的数据. 
        viewConfig:{ 
            autoFill:true, 
            deferEmptyText:'请等待...', 
            emptyText:'没有数据', 
            enableRowBody:true 
        }, 
        sm:this.sm,                             //在每行数据前添加的一组checkBox 
        height:Ext.get(this.el).getComputedHeight(), 
        //autoHeight:true, 
        loadMask:true, 
        maskDisabled:true, 
        cm:this.cm,                             //设置栏位. 
        title:this.title,                       //标题名称. 
        iconCls:'icon-grid',                //标题前的图片css类 
        autoExpandColumn:this.autoExpandColumn, 
        plugins: this.filters, 
        bbar:this.bbar, 
        tbar:this.tbar 
    }); 
     
    this.formFields=this.config.formFields||new Array(); 
     
    /** 
     * 双击数据的事件,弹出一个编辑此条数据的层 
     * @param   grid        此列表的对象 
     * @param   rowIndex    在列表中的行数 
     * @param   e           触发此事件的事件对象 
     */ 
    this.rowdblclick=this.config.rowdblclick||function(grid, rowIndex, e){ 
        var selectId=this.gridStore.data.items[rowIndex].id; 
        this.editInfo(selectId); 
    }; 
    this.grid.on('rowdblclick',this.rowdblclick.createDelegate(this)); 
    this.grid.render(this.el); 
     
    //当js加载完毕后删除loading页面并渐显内容 
    if(this.loadingMark){ 
        setTimeout(function(){ 
            Ext.get(this.loadingMark.loadingEL).remove(); 
            Ext.get(this.loadingMark.loadingMaskEL).fadeOut({remove:true}); 
        }.createDelegate(this), 250); 
    }    
}


Ext.ux.GridExtend.prototype={ 
    /** 
     * 加载 form表单的数据 
     * @param   selectId    选择此条数据的唯一标识码,此参数发送到后台处理 
     */ 
    editInfo:function(selectId){ 
        var form=this.getForm(); 
         
        form.form.load({//start load 参数设置 
            url:this.editUrl, 
            params:{ 
                uniqueCode:selectId 
            }, 
            waitMsg:'Loading..' 
        });//end load 参数设置 
         
        this.formWindow(form,'编辑'); 
    }, 
    getForm:function(){ 
        //错误信息放在右边 
        Ext.form.Field.prototype.msgTarget = 'side'; 
        //var formSaveUrl=this.formSaveUrl; 
        //var formFields=this.formFields; 
        var formSaveUrl=Ext.clone(this.formSaveUrl); 
        var formFields=Ext.clone(this.formFields); 
         
        //实例化form面板 
        var form=new Ext.form.FormPanel({//start Ext.form.FormPanel 
            baseCls:'x-plain', 
            url:this.formSaveUrl, 
            frame:true, 
            id:'form', 
            items:formFields 
        });//end Ext.form.FormPanel 
         
        return form; 
    }, 
    /** 
     * 装form表单的窗口 
     * @param   form            要装载的form 
     * @param   titlePre        标题的前缀 
     */ 
    formWindow:function(form,titlePre){ 
        //实例化窗口 
        this.window=new Ext.Window({//start Ext.Window 
            title:titlePre+'任务列表', 
            width:500, 
            height:500, 
            minWidth:300, 
            minHeight:300, 
            layout:'fit', 
            //closeAction:'hide', 
            plain:true, 
            bodyStyle:'padding:5px', 
            iconCls:'form', 
            buttonAlign:'center', 
            items:form, 
            modal:true, 
             
            buttons:[{                          //按钮 
                text:'保存', 
                handler:(function(){//start function按钮处理函数 
                    if(form.getForm().isValid()){//表单是否通过交验,通过责提交表单,否则弹出错误窗口 
                        form.getForm().submit({ 
                            scope:this, 
                            waitMsg:'保存数据...', 
                            success:function(form,action){ 
                                Ext.MessageBox.alert('消息:','保存成功'); 
                                this.grid.store.reload(); 
                                this.window.close() ; 
                            }, 
                            failure:function(form,action){ 
                                Ext.MessageBox.alert('有错误:', action.result.errors); 
                                this.window.close() ; 
                            } 
                        }); 
                    }else{ 
                        Ext.MessageBox.alert('有错误:','表单填写由错误!'); 
                    } 
                     
                }).createDelegate(this)//end function                
            },{ 
                text:'重置', 
                handler:function(){//start function按钮处理函数 
                    form.getForm().reset(); 
                }//end function 
            }] 
        });//end Ext.Window


        //显示窗口 
        this.window.show(); 
    }, 
    /** 
     * 添加列表新数据的函数 
     */ 
    newInfo:function(){//start newTableInfo 
        this.formWindow(this.getForm(),'添加');        
    },//end newTableInfo 
    /** 
     * 删除数据,并把此数据的唯一标识码发送到后台 
     */ 
    handlerDelete:function(){//start deleteRecord 
        this.sendId(this.deleteUrl); 
         
    },//end deleteRecord 
    sendId:function(url){//start deleteRecord 
        var ids=new Array();                //存放uniqueCode的数组 
        var records=this.grid.selModel.selections.items;//grid中被选择的数据,类型为Array 
        for(var i = 0, len = records.length; i < len; i++){ 
            ids[ids.length]=records[i].id; //把数据id赋予ids数组中 
        } 
        Ext.Ajax.request({                  //调用Ajax发送请求到后台 
            scope:this, 
            url:url,                    //删除grid数据的url. 
            success:function(transport){                //处理成功后返回的函数 
                var oXmlDom=transport.responseText; 
                if(oXmlDom!=''){ 
                     
                    var content=eval(oXmlDom); 
                    Ext.MessageBox.alert("有错误:",content.errors) 
                }else{ 
                    this.grid.store.reload();       //重新加载grid中的数据 
                } 
            }, 
            failure:function(){             //处理后台删除失败的函数 
                Ext.MessageBox.alert('消息','删除失败!'); 
            } 
        }); 
         
    },//end deleteRecord 
    exportExcel:function(){ 
        document.location.href='http://localhost:8080/chalk/hf/sortManager.do?action=export'; 
    } 
} 
下面是使用前要再加的 js ,主要是处理一些ext2.0一些效果,不加也可以,不过可能会少些效果

 

//填充图片的本地应用 
Ext.BLANK_IMAGE_URL='../resources/images/default/s.gif'; 
//在ie中默认的宽度不够 
Ext.apply(Ext.MessageBox,{ 
    alert:function(title, msg, fn, scope){ 
        this.show({ 
            title : title, 
            msg : msg, 
            buttons: this.OK, 
            minWidth:200, 
            fn: fn, 
            scope : scope 
        }); 
        return this; 
    } 
}); 
Ext.menu.RangeMenu.prototype.icons = { 
      gt: '../resources/extendIamges/greater_then.png', 
      lt: '../resources/extendIamges/less_then.png', 
      eq: '../resources/extendIamges/equals.png' 
}; 
Ext.grid.filter.StringFilter.prototype.icon = '../resources/extendIamges/find.png';


/* 
* 修改filter发送到后台的数据模式. 
* 例:filter.[i][field]、filter.[i][type]、filter.[i][value]、filter.[i][comparison]、 
* 
*/


Ext.grid.GridFilters.prototype.buildQuery=function(filters){ 
    var p = {}; 
        for(var i=0, len=filters.length; i<len; i++) { 
            var f = filters[i]; 
            var root = [this.paramPrefix, '[', i, ']'].join(''); 
            p[root + '[field]'] = f.field; 
            //修改此处 
            var dataPrefix = root; 
            for(var key in f.data) { 
                p[[dataPrefix, '[', key, ']'].join('')] = f.data[key]; 
      } 
        } 
         
    return p; 
}


//添加时间交验函数 
Ext.apply(Ext.form.VTypes, {     
    //时间交验属性 
    daterange: function(val, field) { 
        var date = field.parseDate(val); 
         
        var dispUpd = function(picker) { 
          var ad = picker.activeDate; 
          picker.activeDate = null; 
          picker.update(ad); 
        };


        //debugger; 
        if (field.startDateField) { 
          var sd = field.startDateField; 
          sd.maxValue = date; 
          if (sd.menu && sd.menu.picker) { 
            sd.menu.picker.maxDate = date; 
            dispUpd(sd.menu.picker); 
          } 
        } else if (field.endDateField) { 
          var ed = field.endDateField; 
          ed.minValue = date; 
          if (ed.menu && ed.menu.picker) { 
            ed.menu.picker.minDate = date; 
            dispUpd(ed.menu.picker); 
          } 
        }


        return true; 
} 
});
分享到:
评论

相关推荐

    Ext增删改查和excel导出

    在"Ext增删改查和excel导出"这个主题中,我们将探讨如何在ExtJS应用中实现数据的CRUD操作(创建、读取、更新、删除)以及如何将数据导出为Excel格式。 1. 创建(Create) 在ExtJS中,可以使用GridPanel或FormPanel...

    ext实现导出excel的功能。

    在EXTJS这个强大的JavaScript框架中,实现导出Excel功能是一项常见的需求。EXTJS提供了一种高效的方法来将数据导出到Excel格式,使得用户能够方便地处理和分析数据。在这个场景下,我们可以从以下几个关键知识点入手...

    Ext grid导出excel

    支持Ext3 Ext4导出excel,客户端导出表格,支持各种主流浏览器。

    Ext Grid 导出Excel

    这篇博客"Ext Grid 导出Excel"可能详细介绍了如何实现这一功能。 首先,让我们理解Ext Grid的基本工作原理。Ext Grid是Sencha Ext JS框架的一部分,它允许开发者创建可配置的表格视图,可以显示从服务器获取的数据...

    Extjs 增删改查

    ### Extjs 增删改查操作详解 #### 一、引言 在现代Web开发中,Extjs作为一款强大的JavaScript框架,被广泛应用于构建复杂的前端应用。它提供了丰富的组件库,可以方便地实现诸如表格数据展示、增删改查等常见功能。...

    ext2 grid 封装 (包含增删改查 导入导出等操作)

    标题 "ext2 grid 封装 (包含增删改查 导入导出等操作)" 暗示了这是一个关于ExtJS 2.x版本中Grid组件的封装实践,该封装集成了基本的数据操作功能,如添加(Add)、删除(Delete)、修改(Modify)和查询(Query)...

    通用grid 增、删、改、查、导出excel

    Ext2_0的通用grid包括(增、删、改、查、导出excel) - Winner_Net@2007 - 博客园.mht

    ext grid 导出 excel

    综上所述,EXT Grid导出Excel涉及到的技术主要包括EXT Grid的数据操作、XLSX.js库的使用、自定义按钮和事件处理、文件下载触发机制以及可能的样式转换和性能优化。通过这些技术,我们可以实现EXT Grid数据的便捷导出...

    Ext grid 导出Excel

    "Ext grid 导出Excel"是一个常见需求,它涉及到了JavaScript库Ext JS中的数据网格组件(Ext Grid)与Microsoft Excel文件格式的交互。下面我们将深入探讨这个主题。 首先,Ext JS是一个强大的JavaScript UI框架,它...

    Ext Grid导出Excel

    这篇博客“Ext Grid导出Excel”探讨的主题是如何将Ext Grid中的数据显示在Microsoft Excel文件中,这在数据分析、报告生成以及数据共享场景中非常常见。通过这个功能,用户可以方便地将网格数据导出为标准的Excel...

    Ext GridPanel导出Excel(改进)

    将页面的GridPanel中的数据导出到Excel中 测试Ext:版本2.2.1 支持GridSummary,GroupSummary和GroupHeaderPlugin插件 使用方法: 1)把三个JS文件引入到页面中 2)调用例句: var data2Excel = new Ext.icss.Data2...

    spring ext 日志管理和导出excel

    在“spring ext 日志管理和导出excel”这个主题中,我们将深入探讨如何利用Spring扩展功能来实现日志管理以及Excel数据导出。 首先,日志管理是任何应用程序的基础部分,它帮助开发者跟踪系统行为、调试问题并记录...

    Ext生成报表导出到Excel

    `Ext`是一个流行的JavaScript框架,它提供了一种强大的方式来构建富客户端应用程序,而将Ext应用中的数据导出到Excel则可以方便用户进行进一步的数据处理和分析。 `Ext`框架的核心是它的组件模型,其中包括各种图表...

    从Ext grid导出Excel的代码和方法

    在提供的压缩包文件"ext导出excel"中,可能包含了一个示例代码或者实现这个功能的完整解决方案。通过研究和学习这个代码,你可以更直观地了解上述步骤是如何在实践中进行的。此外,你还可以参考Sencha官方文档和社区...

    EXT导出Excel代码demo

    在这个"EXT导出Excel代码demo"中,我们将探讨如何使用EXT 3.3实现将数据导出到Excel文件的功能。 在EXT应用中,导出数据到Excel通常涉及到以下几个关键步骤: 1. 数据准备:首先,你需要收集并格式化要导出的数据...

    ext 4.2 grid导出excel 文件

    标题"ext 4.2 grid导出excel 文件"指的是使用Ext JS 4.2版本的grid组件功能,将其中的数据转换成Excel格式,这样用户就可以方便地下载和处理。这个过程通常涉及到JavaScript、服务器端支持以及可能的文件处理库。 ...

    Ext Grid数据导出到Excel

    Ext.ptx.SlideMsg.msg("信息提示", "导出Excel成功!"); }, failure: function(response, request) { Ext.getBody().unmask(); Ext.MessageBox.alert("出现异常", response.responseText); } }); } ``` ### 3...

    ext打印、jquery打印、ext导出excel

    `ext打印`、`jquery打印`和`ext导出excel`都是与前端开发密切相关的技术,主要用于提升用户体验和增强数据处理能力。 首先,我们来详细了解一下`ext打印`。EXT是一个流行的JavaScript框架,用于构建富客户端应用。...

    ext grid 导出excel 代码实例

    在EXT Grid中,导出数据...以上就是EXT Grid导出Excel的基本流程和技术要点。在"engierManger"这个项目中,你可能需要结合具体的业务逻辑和代码实现这个功能。记住,始终要关注用户体验,确保导出过程快速且用户友好。

    extjs4导出excel

    "extjs4导出excel"的功能就是实现了这个需求,让用户能够在ExtJS 4应用中方便地导出表格数据到Excel文件。 在ExtJS 4中实现数据导出至Excel通常涉及以下几个关键步骤: 1. **数据收集**:首先,你需要收集要导出的...

Global site tag (gtag.js) - Google Analytics