`
chenxueyong
  • 浏览: 342283 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ext构造自己的组件

阅读更多
/**
* @title:新闻中心模块
* @author:余晓天
* @date:2009/2/13
*/
/**初始化FormPanel***************************************************************************************************/
NewsFormPanel=Ext.extend(Ext.FormPanel,{
   //传参
url:null,
    constructor:function(_cfg){
        if(_cfg==null)
         _cfg={};
        Ext.apply(this,_cfg);
        //初始化构造函数
        NewsFormPanel.superclass.constructor.call(this,{
           width:250,
           height:210,
           frame:true,
           resizable:false,
           layout:"form",
           labelWidth:60,
           buttonAlign:"center",
           defaultType:"textfield",
           baseCls:"x-plain",
           items:[
            {
             name:"name",
             fieldLabel:"姓名",
             anchor:"90%",
             allowBlank:false,
             emptyText:"姓名不能为空"
            },
            {
             xtype:"combo",
             mode:"local",
             value:"男",
             hiddenName:"sex",
             triggerAction:"all",
             displayField:"sex",
             readOnly:true,
             store:new Ext.data.SimpleStore(
               {
                fields:["sex"],
                data:[["男"],["女"]]
               }
               ),
             name:"sex",
             fieldLabel:"性别",
             anchor:"90%"
            },
            {
             name:"age",
             fieldLabel:"年龄",
             anchor:"90%",
             vtype:"age",
             allowBlank:false
            },
            {
             name:"pwd",
             inputType:"password",
             fieldLabel:"密码",
             allowBlank:false,
             anchor:"90%"
            },
            {
             xtype:"datefield",
             readOnly:true,
             name:"time",
             fieldLabel:"注册时间",
             anchor:"90%",
             allowBlank:false,
             format:"Y-m-d"
            }
           ]
          })
      this.addEvents("submit");
       },
     //按钮事件提交方法
     submit:function(_params){
      if(_params==null)
       _params={};
      if(this.url!=null)
       this.getForm().submit({url:this.url,params:_params,success:this.onSubmit,waitTitle:"数据传送",waitMsg:"数据传送中...",scope:this});
     },
     //得到form列表值方法
     getValues:function(){
      return new Ext.data.Record(this.getForm().getValues());
     },
     //设置form列表值方法
     setValues:function(_rs){
      this.getForm().loadRecord(_rs);
     }
     ,
     //清空form列表
     reset:function(){
      this.getForm().reset();
     },
     //提交事件触发定义
     onSubmit:function(_form,_action)
     {
      this.fireEvent("submit",this,_action);
     }
    });
/**初始化window*******************************************************************************************************/
NewsWindow=Ext.extend(Ext.Window,{
form:null,
url:"",
//初始化参数
constructor:function(_cfg){
      if(_cfg==null)
       _cfg={};
      Ext.apply(this,_cfg);
      //添加form
      this.form=new NewsFormPanel({url:this.url});
      NewsWindow.superclass.constructor.call(this,{
         width:250,
         height:230,
         plain:true,
         modal:true,
         resizable:false,
         buttonAlign:"center",
         items:this.form,
         bodyStyle:"padding:3px",
         closeAction:"hide",
         buttons:[{
          text:"确 定",
          handler:function(){
             this.OnSubmit();
            },
          scope:this
         },{
          text:"取 消",
          handler:function(){
           this.OnExitClick();
          },
          scope:this
         }]
        }
      );
     this.addEvents("submit");
     this.form.on("submit",this.OnSubmitClick,this);
     },
   //获取内置form提交事件
   OnSubmit:function()
   {
    this.form.submit();
   },
   //触发内置form提交事件
   OnSubmitClick:function(_form,_action)
   {
    this.fireEvent("submit",this,_action);
    this.close();
   },
   //关闭当前window事件
   OnExitClick:function()
   {
    this.close();
   },
   //关闭当前window方法
   close:function(){
    this.form.reset();
    this.hide();
   }
    
});
/**初始化增加对话window********************************************************************************************/
NewsInsertGridWin=Ext.extend(NewsWindow,{
       title:"增加新闻",
      
url:"../dboperition/add.aspx"
      });
/**初始化修改对话window********************************************************************************************/
NewsUpdateGridWin=Ext.extend(NewsWindow,{
       title:"修改新闻",
       params:"",
      
url:"../dboperition/update.aspx",
       load:function(_rs)
        {
         var srecord=_rs;
         this.form.setValues(srecord);
         this.params=_rs.get("id");
        },
       OnSubmit:function()
       {
        this.form.submit({id:this.params});
       }
      });
/**********************************************************************************************/
/**初始化gridpanel***************************************************************************************************/
NewsGridPanel=Ext.extend(Ext.grid.GridPanel,{
   //增加window初始化
   insertwin:new NewsInsertGridWin(),
   //修改window初始化
   updatewin:new NewsUpdateGridWin(),
   //数据读取
   store:new Ext.data.Store({
           url: "NewsData.aspx",
           reader: new Ext.data.JsonReader({
            root:"data",
            totalProperty:"pagescount"
           },
           [
           {name:"id",type:"int"},
           {name:"moduleName"},
           {name:"channelName"},
           {name:"title"},
           {name:"releaseTime"},
           {name:"releaseMan"}])
          }),
   //初始化参数
   constructor:function(){
    //参数初始化
    NewsGridPanel.superclass.constructor.call(this,{
          id:"newspanel",
          frame:true,
          anchor:"100%",
          renderTo:Ext.getBody(),
          height:300,
          bodyStyle:'width:100%',
          iconCls:"icon-grid",
          loadMask:{msg:"数据载入中...."},
          tbar:[{text:"增加",
            tooltip:"新增",
            iconCls:"addicon",
            handler:function(){
               this.insertwin.show();
              },
            scope:this
            },"-"
            /*{text:"修改",
            tooltip:"修改",
            iconCls:"option",
            handler:function(){
              this.updatewin.show();
              try
              {
              
               this.updatewin.load(this.getSelected());
              }
              catch(err){Ext.Msg.alert
              (
               "系统提示",err.description
              );
               this.updatewin.close();
              };
            },
            scope:this
            },"-",
            {text:"删除",
            tooltip:"删除",
            iconCls:"remove",
            handler:function(){
              try
              {this.getSelected();
              Ext.Msg.confirm("系统提示","你确认删除这条记录吗?",this.onRemove,this);
              }
              catch(err){Ext.Msg.alert("系统提示",err.description)};
             },
            scope:this
            },"-"*/
            ],
          columns:[
             {header:"序号",width:80,dataIndex:"id",sortable:true,align:"center"},
             {header:"模块名称",dataIndex:"moduleName",sortable:true,align:"center"},
             {header:"频道名称",width:120,dataIndex:"channelName",sortable:true,align:"center"},
             {header:"标题",width:200,dataIndex:"title",sortable:true,align:"center"},
             {header:"发布时间",width:150,dataIndex:"releaseTime",sortable:true,align:"center"},
             {header:"发布人",dataIndex:"releaseMan",sortable:true,align:"center"},
             {header:"修改",width:60,dataIndex:"id",renderer:this.UpdateRender,align:"center"},
             {header:"删除",width:60,dataIndex:"id",renderer:this.DelRender,align:"center"}
          ],
          sm:new Ext.grid.RowSelectionModel({
                singleSelect:true
                }),
          store:this.store,
          bbar:new Ext.PagingToolbar({
           pageSize:5,
           store:this.store,
           displayInfo:true,
           displayMsg:"当前显示{0}-{1}条记录/共{2}条记录",
           emptyMsg:"无数据可显示!"
          })
         });
      this.store.load({params:{start:0,limit:5}});
      this.insertwin.on("submit",this.onInsert,this);
      this.updatewin.on("submit",this.onUpdate,this);
   },
   //修改按钮呈现
   UpdateRender:function(value){
     return '<a id="newupdate" href="#)">修改</a>';
    }
   ,
   //删除按钮呈现
   DelRender:function(value){
     return '<a id="newdel" href="#">删除</a>';
    }
   ,
   //删除记录
   del:function(){
    try
    {
     var _sel=this.getSelected();
     Ext.Ajax.request({
     
url:"../dboperition/del.aspx",
      params:{id:_sel.get("id")},
      success:function(_rs,_op)
       {
        var result=Ext.util.JSON.decode(_rs.responseText);
        if(result.success==false)
         Ext.Msg.alert("系统信息","删除失败!")
       }
     });
     this.getStore().remove(_sel);
     this.getStore().reload();
    }catch(err)
    {
     Ext.Msg.alert("系统信息","你尚未选择一条记录!")
    }
   },
   /*getSelected:function(){
    if(this.getSelectionModel().getCount()==0)
    {
     throw Error("你尚未选择一条记录!")
    }
    else
     return this.getSelectionModel().getSelected();
   },*/
   //增加事件
   onInsert:function(_win,_rs)
   {
    this.store.reload();;
   },
   //修改事件
   onUpdate:function(_win,_rs)
   {
    this.store.reload();
   },
   //删除事件
   onRemove:function(_btn)
   {
    if(_btn=="yes")
     this.del();
   }
})
分享到:
评论

相关推荐

    EXT dojochina Ext类构造方法.rar

    然后,我们定义了自己的构造方法,使用`callParent()`来调用父类的构造方法,确保正确地初始化组件的基础部分。 除了构造方法,Ext类还涉及其他重要概念,如配置对象(config object)、混入(mixins)和静态方法...

    EXT构造动态树 包括增删改操作

    EXT提供了丰富的组件来实现这样的功能,尤其是对于JSON数据的处理,EXT能很好地进行解析并展示。 在EXT中,`Ext.tree.Panel` 是用于创建树形视图的主要组件。这个类提供了丰富的配置选项和方法,使得动态生成和操作...

    Ext表单组件之checkbox

    源码中包含了组件的构造函数、事件处理、样式设置等。例如,`doCheck`方法负责实际的选中操作,而`toggle`方法则用于切换选中状态。 6. **工具的使用** Ext JS提供了一些开发工具,如`Sencha CMD`,用于生成应用...

    ext6中年份选择控件亲测好用

    1. **创建YearField**: 通过EXT的构造函数,我们可以创建一个新的YearField实例,设置其属性如初始值、最小年份、最大年份等。例如: ```javascript Ext.create('Ext.form.field.Year', { fieldLabel: '出生年份'...

    ext 打造华丽页面

    在EXT 1.1中,最重要的概念之一是组件(Component),它是EXT JS的基础构造块。EXT提供了一系列预定义的组件,如表格(Grid)、面板(Panel)、表单(Form)、菜单(Menu)等,这些组件可以自由组合,构建出复杂的...

    ext 3.0中文API

    在EXT 3.0的API文档中,每个类都有详细的说明,包括其构造函数、公共方法、属性和事件。例如,`Ext.Panel`类是EXT中基础的容器组件,它有`setTitle`方法来设置面板标题,`setBodyStyle`方法来修改内容区域的样式,...

    EXT例子,可以直接跑

    通过这个可以直接运行的例子,新手可以直观地学习EXT的用法,理解组件的构造和事件处理,以及MVC模式的应用。同时,对于有经验的开发者来说,这也是一个了解EXT最佳实践和常见应用场景的好资源。总之,深入研究并...

    ext js 培训资料

    3. 配置选项:组件的配置选项是EXT组件的重要特性,可以在构造函数中传递参数,定义组件的详细配置。 4. 渲染与显示:组件必须先渲染后才能在页面上显示,可通过多种方式实现。 三、EXT JS组件种类 1. 基础组件:如...

    Ext 编辑表格视频教程

    1. **Ext Grid Panel**: Ext的核心组件之一是Grid Panel,它用于显示二维数据集,通常用于数据展示和操作。Grid Panel可以配置多种列类型,如文本、数字、日期等,并支持排序、分页和过滤。 2. **Inline Editing**:...

    Ext_2.2_API(chinese).rar_Ext 2.2 API_ext js 2_ext-2.2 api_ext2.2

    Ext JS 2.2是一个基于浏览器的UI库,提供了大量的组件和工具,用于创建功能丰富的Web应用。这些组件包括表格、树形视图、菜单、窗口、表单、按钮、面板等,几乎涵盖了构建复杂前端界面所需的所有元素。通过使用Ext ...

    Ext JS PPT教程

    - 配置选项(options)允许开发者在组件构造函数中传递参数,定制组件的属性和行为。 3. **组件的渲染与显示**: - 组件必须先被渲染才能在页面上显示。渲染可以通过多种方法实现,包括直接调用显示方法或在适当...

    EXT小图标大全.rar

    2. JavaScript配置:在EXT Js 的组件构造函数中,可以通过`iconCls`或`glyph`属性来指定图标。`iconCls`接受CSS类名,`glyph`则用于设置SVG编码的图标。 3. 图标主题:EXT Js 支持图标主题,允许全局更换图标样式。...

    EXT3.0中文API文档

    在阅读EXT3.0中文API文档时,开发者应该重点了解各个类的构造函数、常用属性和方法,以及如何通过配置选项定制组件。此外,通过实例代码和示例,可以更好地理解和掌握EXT3.0的用法。 总的来说,EXT3.0中文API文档是...

    ext3.0中文API

    EXT3.0中文API文档还包含了完整的类参考,每个类都有详细的构造函数、属性、方法和事件说明。这有助于开发者查找特定功能的实现方式,以及如何扩展和定制EXT组件。 总而言之,EXT3.0中文API文档是学习EXT框架的关键...

    EXT导出Excel代码demo

    EXT 3.3 是EXT库的一个版本,它包含了丰富的组件和功能,如表格、面板、窗口、菜单等,以及强大的数据管理和渲染机制。在这个"EXT导出Excel代码demo"中,我们将探讨如何使用EXT 3.3实现将数据导出到Excel文件的功能...

    不错的日历控件(JavaScript、ext)

    5. **自定义样式**:EXT日历控件允许开发者根据自己的品牌风格进行样式调整,以满足不同设计需求。 6. **与其他EXT组件集成**:EXT日历控件可以无缝集成到EXT的其他组件中,例如网格面板、表单等,提供完整的数据...

    Ext-window属性

    23. **defaultType**: 当通过`items`在构造函数中添加新组件时,如果没有指定`xType`,则会使用这个默认类型创建组件。默认值为`'panel'`。 24. **defaults**: 为所有添加到此组件的子组件提供默认配置对象。如果子...

    Ext项目小框架介绍源码

    - **Ext Application**:它是Ext JS中的顶级构造函数,负责整个应用的初始化、路由管理和模块管理。通过定义应用的配置项,可以设置主视图、控制器、存储等核心组件。 - **MVC模式**:Model-View-Controller模式是...

    国内首个基于Ext开发开源企业级框架Efsform

    Efs 是企业快速开发的UI 层。...构造ext对象。开发人员可以不用深入掌握Ext框架,只需要开发者编写少量的 html 代码,也可以做出很炫的页面。当然你也可以使用new Ext 的控件渲染到 页面,两者可以混合使用。

    ext学习文档

    - **[pic]组件模型ComponentModel**: 介绍了EXT2中的组件模型。 - **[pic]容器模型ContainerModel**: 解释了容器模型在EXT2中的作用。 - **[pic]布局Layouts**: 介绍了EXT2中的布局机制。 #### 结论 通过以上对EXT...

Global site tag (gtag.js) - Google Analytics