ext構造自己的組件

/**
* @title:新聞中心模塊
* @author:anya

* @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();
   }
})

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章