EXTJS初级UI设计进阶教程(2)

来源:互联网 发布:禁止用户安装软件 编辑:程序博客网 时间:2024/06/09 16:41

转自:http://blog.csdn.net/yu624774720hua/article/details/6556799

了解Ext.Window

 

1、主要配置项: 


      closable:是否允许关闭窗口,默认为true。 
      closeAction:关闭窗口的动作,包括以下两种: 
            close:从DOM删除窗口,销毁窗口及其所属组件,窗口不再可用,重新显示需要调用show方法。此为默认值。 
            hide:通过设置可见性隐藏窗口,窗口还可用,调用show方法后重新显示。 
      constrain:是否约束窗口只能在容器内移动,默认为false。窗口默认渲染到document.body。 
      constrainHeader:是否约束窗口头部只能在容器内移动,默认为false。 
      draggable:是否可拖曳,默认为true。 
      resizable:是否可改变窗口的大小,默认为true。 
      modal:是否为模式窗口,默认为false。 
      maximizable:是否可最大化窗口,默认为false。 
      maximized:是否在初始化时最大化显示窗口,默认为false。 
      x:窗口的X坐标值。 
      y:窗口的Y坐标值。 
      manager:WindowGroup的引用。 

      expandOnShow:是否在窗口显示时展开它,默认为true。 当取值为false时,collapsed取值为true时,窗口初始显示时收缩。 
      minimizable:是否可最小化窗口,默认为false。需要自定义最小化行为。 
      defaultButton:当窗口获得焦点时,默认获得焦点的按钮。 
      plain:主体背景是否透明,默认为false。 





2、主要方法: 

 


      show( [String/Element animateTarget], [Function callback], [Object scope] ):显示窗口。 
      hide( [String/Element animateTarget], [Function callback], [Object scope] ):隐藏窗口。 
      center():窗口居中显示。 
      close():关闭窗口,相当于closeAction值为close的情形。 
      maximize():最大化窗口。 
      restore():还原窗口大小。 
      toggleMaximize():在最大化和还原之间切换。 

      minimize():最小化窗口。 
      setActive( Boolean active ):激活窗口。 
      focus():窗口获得焦点。 
      toBack():后置窗口。 
      toFront( [Boolean e] ):前置窗口。 
      resize( Ext.Window this, Number width, Number height ):改变大小。 


 

3、Ext.WindowGroup的主要方法: 


      hideAll() 
      sendToBack( String/Object win ) 
      bringToFront( String/Object win ) 
      get( String/Object id ) 
      getActive() 

      each( Function fn, [Object scope] ) 
      getBy( Function fn, [Object scope] )

 

 


[xhtml] view plaincopy
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  5. <link rel="stylesheet" type="text/css" href="../../../resources/css/ext-all.css" mce_href="resources/css/ext-all.css" />  
  6. <title>登陆窗体</title>  
  7. <mce:script type="text/javascript" src="../../../adapter/ext/ext-base.js" mce_src="adapter/ext/ext-base.js"></mce:script>  
  8. <mce:script type="text/javascript" src="../../../ext-all.js" mce_src="ext-all.js"></mce:script>  
  9. <mce:script type="text/javascript" src="../../../build/locale/ext-lang-zh_CN.js" mce_src="build/locale/ext-lang-zh_CN.js"></mce:script>  
  10. <mce:script type="text/javascript"><!--  
  11.       
  12.     Ext.onReady(function(){  
  13.       
  14.         var _window = new Ext.Window({  
  15.                 title:"登 陆",  
  16.                 frame:true,  
  17.                 width:260,  
  18.                 height:130,  
  19.                 layout:"form",  
  20.                 labelWidth:45,  
  21.                 plain:true,  
  22.                 resizable:false,  
  23.                 defaults:{xtype:"textfield" , width:180},  
  24.                 bodyStyle:"padding:3px",  
  25.                 buttonAlign :"center",  
  26.                 closeAction:"hide",  
  27.                 listeners:{  
  28.                     "show":function(){  
  29.                                   
  30.                                 alert("窗体显现") ;  
  31.                            },  
  32.                     "hide":function(){  
  33.                       
  34.                             alert("窗体隐藏") ;  
  35.                     },  
  36.                     "close":function(){  
  37.                                   
  38.                                 alert("窗体关闭") ;  
  39.                             }  
  40.                 },  
  41.                 items:[{  
  42.                     fieldLabel:"账号"  
  43.                 },{  
  44.                     fieldLabel:"密码"  
  45.                 }],  
  46.                 buttons:[{  
  47.                     text:"确 定"  
  48.                 },{  
  49.                     text:"取 消",  
  50.                     handler:function(){  
  51.                       
  52.                         this.hide() ;  
  53.                       
  54.                     }  
  55.                 }]  
  56.             }) ;  
  57.               
  58.         _window.show() ;  
  59.           
  60.     }) ;  
  61.       
  62. // --></mce:script>  
  63. </head>  
  64. <body>  
  65. </body>  
  66. </html>  
 

 

扩展代码:

 

Ext.Window的closeAction为'close'时

[javascript] view plaincopy
  1. Ext.Window:items: [memberForm]  
  2. memberForm:items : [gridPanel]  
  3. gridPanel:store: fileStore  
  4. var fileStore = new Ext.data.JsonStore({  
  5.    url:'getDocListForCancelAttDoc.do?FILEITEMID='+docId,  
  6.    baseParams:{command:'query'},  
  7.    totalProperty:'fileCount',  
  8.    root:'fileMembers',  
  9.    //列表字段  
  10.    fields:fileFields,  
  11.    pruneModifiedRecords:true  
  12.   });  
 

 

最开始设置Ext.Window的closeAction为'hide',每次关闭窗口后,下次加载的store还是原来的,于是每次又添加了store.reload();结果还是一样。

将Ext.Window的closeAction改为'close'后,报Ext.fly()为空或不是对象。

将Ext.Window的定义放到里面后就不报了,暂时做个记录如下:

[javascript] view plaincopy
  1. if(!fileAppendixWindow){  
  2.     fileAppendixWindow = new Ext.Window({ //修改前的代码,fileAppendixWindow在上面有定义  
  3.     title:'请选择要取消的文档',  
  4.        layout:'fit',  
  5.        resizable:false,  
  6.        width:500,  
  7.        height:300,  
  8.        closable:true,  
  9.        closeAction:'close',  
  10.           plain:true,  
  11.           modal: true,  
  12.           //窗口中加入文档列表Panel  
  13.        items: [memberForm]  
  14.    });  
  15. }  
 

 

Ext.WindowGroup代码块

 

[javascript] view plaincopy
  1. var i = 0, mygroup;  
  2. function newWin() {  
  3.     var win = new Ext.Window({title:"窗口"+i++,  
  4.         width: 400,  
  5.         height: 300,  
  6.         maximizable: true,  
  7.         manager: mygroup  
  8.     });  
  9.     win.show();  
  10. }  
  11. function toBack() {  
  12.     mygroup.sendToBack(mygroup.getActive());  
  13. }  
  14. function hideAll() {  
  15.     mygroup.hideAll();  
  16. }  
  17. Ext.onReady(function(){  
  18.     mygroup = new Ext.WindowGroup();  
  19.     Ext.get("btn").on("click",newWin);  
  20.     Ext.get("btnToBack").on("click",toBack);  
  21.     Ext.get("btnHide").on("click",hideAll);  
  22. });  

原创粉丝点击