`
chenxueyong
  • 浏览: 336800 次
  • 性别: 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开发开源企业级框架Efsform

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

    Ext 学习中文手册

    扩展EXT组件 29 文件的创建 30 Let's go 33 完成 35 EXT的布局(Layout) 37 简单的例子 38 加入内容 42 开始使用Grid 51 步骤一 定义数据(Data Definition) 51 步骤二 列模型(Column Model) 52 Grid组件的简易...

    Ext+JS高级程序设计.rar

    9.2.2 重写构造函数 257 9.2.3 继承组件的一些准备 257 9.2.4 常用的辅助函数 258 9.2.5 使用xtype 258 9.3 实现一个功能完整的增、删、查、改表格控件 259 9.3.1 扩展GridPanel 259 9.3.2 配置列模型 259 9.3.3 ...

    EXT简体中文参考手册(PDF&CHM电子档)

    扩展EXT组件 29 文件的创建 30 Let's go 33 完成 35 EXT的布局(Layout) 37 简单的例子 38 加入内容 42 开始使用Grid 51 步骤一 定义数据(Data Definition) 51 步骤二 列模型(Column Model) 52 Grid组件的简易...

    EXT 中文帮助手册

    将数据加入到模板中 62 下一步 63 学习利用模板(Templates)的格式...构造器函数 66 方法共享 66 表单组件入门 67 表单体 67 创建表单字段 67 完成表单 68 下一步 69 为一个表单填充或提交...

    Ext Js权威指南(.zip.001

    8.4.1 组件管理及查询:ext.componentmanager与ext.componentquery / 423 8.4.2 焦点管理:ext.focusmanager / 424 8.4.3 z-order管理:ext.zindexmanager与ext.windowmanager / 425 8.4.4 状态管理:ext.state....

    efs.rar_efs_efs java_ext 框架_html

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

    EXT 中文手册

    将数据加入到模板中 62 下一步 63 学习利用模板(Templates)的格式...构造器函数 66 方法共享 66 表单组件入门 67 表单体 67 创建表单字段 67 完成表单 68 下一步 69 为一个表单填充或提交...

    ExtJSWeb应用程序开发指南(第2版)

    4.1.7 Ext.form.field.Checkbox复选框和Ext.form.field.Radio单选框 4.1.8 Ext.form.CheckboxGroup和Ext.form.RadioGroup 4.1.9 Ext.form.field.Trigger触发字段 4.1.10 Ext.form.field.Spinner微调字段 4.1.11 ...

    EfsFrame Web表现层API文档

    Efs 是企业快速开发的 UI 层。这个 UI 层封装 extjs 框架,Ext 提供了好的 页面布局方式、功能强大的组件...构造ext对象。开发人员可以不用深入掌握Ext框架,只需要开发者编写少量的 html 代码,也可以做出很炫的页面。

    Vue.extend构造器的详解

    也就是预设了部分选项的Vue的实例构造器,它常常服务于Vue.component用来生成组件,可以简单理解为当在模板中遇到该组件作为标签的自定义元素时,会自动调用“扩展实例构造器”来生产组件实例,并挂在到自定义元素上...

    extjs-tag-cloud:Ext JS标签云组件

    功劳归于人们@ 我刚刚修改了构造函数接受存储为标签数组。 用法 只需将以下内容添加到您的构造函数树中: { xtype : 'tagcloud' , store : [ 'education' , 'financial' , 'computer' , 'application' , 'online...

    用Vue.extend构建消息提示组件的方法实例

    前段时间自己做的vue练手项目,需要一个通用的消息提示组件,但是消息提示这种组件我更想用方法来调用,而不是在各个页面上都添加个组件(那样感觉很麻烦,重度懒癌患者),于是就上网差查了查,并研究了ElementUI的...

    学习ExtJS TextField常用方法

    三、函数 getCmp(string _id):得到id为_id的组件对象。 getValue():得到文件框值。 四、其它 layout:只在在此布局下才能正确显示文件框的标签名,布局的宿主对象必面 是Ext.Container或者Ext.Container的子类。 ...

    vue.extend实现alert模态框弹窗组件

    本文通过Vue.extend创建组件构造器的方法写弹窗组件,供大家参考,具体内容如下 alert.js文件代码 import Vue from 'vue' // 创建组件构造器 const alertHonor = Vue.extend(require('./alert.vue')); var ...

    SenchaCmd-3.1.0.192-windows.exe

    使用 sencha generate 命令帮你你快速的创建一个mvc的组件包像controllers和models 执行以下命令sencha help generate你可以看到有如下的扩展信息: 重要:为了执行命令,你需要在当前应用程序的路径下执行才可以。...

    vue.extend与vue.component的区别和联系

    如果大家只顾开发,对基础知识不了解,在今后的解决问题过程中,也是个大问题,今天小编抽空对基础概念给大家屡一下,用于大家日后学习。 Vue.extend({})简述:使用vue.extend返回... 2,实例化构造函数从而模拟组件:

    SenchaCmd-5.1.0.26-windows

    1.代码生成工具:代码生成工具生成整个应用程序并且扩展生成mvc的组件框架,如,使用sencha generate app 命令,可以自动帮你生成一个完成的应用程序目录框架。 2.JS编译:框架意识,Javascript 编译器了解Sencha的...

    flutter 输入框组件TextField的实现代码

    TextField 顾名思义文本输入框,类似于iOS中的UITextField和Android...TextField的构造方法: const TextField({ Key key, this.controller, //控制器,控制TextField文字 this.focusNode, this.decoration: const

    Vue extend的基本用法(实例详解)

    Vue.extend 的作用,就是基于 Vue 构造器,创建一个‘ 子类 ‘,它的参数跟new Vue的基本一样,但data要跟组件一样,是个函数,再配合$mount,就可以渲染组件,并且挂载到任意指定的节点上,比如body(这是单文件...

Global site tag (gtag.js) - Google Analytics