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

extjs 菜单栏使用(转)

 
阅读更多

 

Ext系列之菜单栏和工具栏

分类: Javascript 1668人阅读 评论(0) 收藏 举报

菜单栏和工具栏是经常用的,今天大家一块看看Ext中的菜单和工具如何使用吧!

先看下面的代码,貌似有点长,不过注释很清楚,而且下面我会逐一去解释:

 

 

[javascript] view plaincopy
  1. <html>  
  2.     <head>  
  3.         <link href="ext/resources/css/ext-all.css" mce_href="ext/resources/css/ext-all.css" rel="stylesheet" type="text/css" />  
  4.         <mce:script src="ext/adapter/ext/ext-base.js" mce_src="ext/adapter/ext/ext-base.js" type="text/javascript"></mce:script>  
  5.         <mce:script src="ext/ext-all.js" mce_src="ext/ext-all.js" type="text/javascript"></mce:script>  
  6.         <mce:script type="text/javascript"><!--  
  7.             Ext.onReady(function(){  
  8.                 var mnFile=new Ext.menu.Menu({//定义一工具栏一个按钮的下拉列表Menu(注意这个item中有点乱,主要为了让大家多看几种形式)  
  9.                     id:'mnFile',  
  10.                     items:[   
  11.                         {  
  12.                             text:'新建',  
  13.                             icon:'ext/docs/resources/favicon.ico',//设置菜单前面图标  
  14.                             handler:function(){  
  15.                                 Ext.Msg.alert("系统提示","您单击了‘新建’");  
  16.                             }  
  17.                         },  
  18.                         new Ext.menu.Item({  
  19.                             text:'打开'  
  20.                         })  
  21.                     ]  
  22.                 });  
  23.                   
  24.                 var mnSystem=new Ext.menu.Menu({//第二个Menu列表,这里看一下二级菜单  
  25.                     id:'mnSystem',  
  26.                     items:[   
  27.                         new Ext.menu.Item({  
  28.                             text:'设置',  
  29.                             menu:[  
  30.                                     {text:'皮肤', menu:new Ext.menu.ColorMenu({handler:function(cm,color){  
  31.                                         Ext.Msg.alert("系统消息","您选择的颜色:"+color);  
  32.                                     }})},  
  33.                                     {text:'日期',menu:new Ext.menu.DateMenu({handler:function(dp,date){  
  34.                                         Ext.Msg.alert("系统消息",date.format("您选择的日期是:Y年m月d日"));  
  35.                                     }})},  
  36.                                     new Ext.menu.Separator(),//创建分隔符  
  37.                                     new Ext.menu.Item({//三级菜单  
  38.                                         text:'语言',  
  39.                                         menu:[  
  40.                                             new Ext.menu.CheckItem({text:"中文",group:"language"}),   
  41.                                             new Ext.menu.CheckItem({text:"English",group:"language"})  
  42.                                         ]  
  43.                                     }),  
  44.                                     'separator'//这样也可以添加分隔符  
  45.                                     new Ext.menu.Item({//注意和上面的区别就是这个没有group,所以就显示为了多选框  
  46.                                         text:'字体类型',  
  47.                                         menu:[  
  48.                                             new Ext.menu.CheckItem({text:"斜体"}),   
  49.                                             new Ext.menu.CheckItem({text:"加粗"}),   
  50.                                             new Ext.menu.CheckItem({text:"下划线"})  
  51.                                         ]  
  52.                                     }),  
  53.                                     '-'//同样可以创建分隔符  
  54.                                       
  55.                             ]  
  56.                         }),  
  57.                     ]  
  58.                 });  
  59.                 var btnFile=new Ext.Button({  
  60.                     text:'文件',  
  61.                     menu:mnFile  
  62.                 });  
  63.                 var btnSystem=new Ext.Button({  
  64.                     text:'系统',  
  65.                     menu:mnSystem  
  66.                 });  
  67.                 var tb=new Ext.Toolbar({  
  68.                     id:'tb',  
  69.                     width:'auto',  
  70.                     height:30,  
  71.                     items:[  
  72.                         btnFile,  
  73.                         btnSystem  
  74.                     ]  
  75.                 });  
  76.                 tb.render(Ext.getBody());  
  77.                       
  78.             });  
  79.           
  80. // --></mce:script>  
  81.         <mce:style type="text/css"><!--  
  82.             .item{  
  83.                 padding-left:10px,  
  84.                 color:red  
  85.             }  
  86.           
  87. --></mce:style><style type="text/css" mce_bogus="1">         .item{  
  88.                 padding-left:10px,  
  89.                 color:red  
  90.             }  
  91.         </style>  
  92.     </head>  
  93.     <body>  
  94.         <div id="divMenu"></div>  
  95.     </body>  
  96. </html>  

 

 

上面我方了完整的代码,有相应的ext库的话可以直接运行,下面我们逐一看一下相关内容。

Ext中的Menu很容易使用,但是对于没有用过的初学者往往有一个误区就是认为声明一个Menu对象(例如上面的mnFile)就可以直接放到工具栏上(例如上面的tb),其实是不对的,通过代码我们看到Menu对象是放在一个button中再将button放到Toolbar上面的;Ext中有几类Menu的Item类型,上面我将常用的都列出来了(还有就是自定义和baseItem这里就不再说了),其他都好说也容易理解,但是注意DateMenu和ColorMenu的使用,并不是直接作为一个menu(注意这里是小写的menu)中使用的而是放到一个Menu的item中使用的(这一点是很合理的,因为总不能直接在menu中出现一个color选框吧,总要点一个类似按钮的东西弹出来才好用啊);然后就是对于CheckItem是单选还是多选我上面已经注释了,想要单选的话就在同一组中标记相同的group就可以了;还有就是初学者会被menu嵌套中item和最后提一下啊就是Ext中经常用到分隔符,我上面已经将三种使用方式都列出来了,不过大家不要错误理解分隔符,不仅仅是纵向分割,想工具条上的多个横排按钮的分割也是如此。

关于Toolbar我再多说两句,请看下面的例子:

 

[javascript] view plaincopy
  1. Ext.onReady(function(){  
  2.     var tb=new Ext.Toolbar({  
  3.         id:'tb',  
  4.         renderTo:'divToolbar',  
  5.         autoWidth:true,  
  6.         autoHeight:true,  
  7.         items:[  
  8.             '查询条件:',  
  9.             new Ext.form.Field({  
  10.                   
  11.             }),  
  12.             '',  
  13.             {  
  14.                 xtype:'button',  
  15.                 text:'搜索',  
  16.                 iconCls:'btn_search'  
  17.             },  
  18.             '->',//  
  19.             '<b>其他功能:</b>',  
  20.             new Ext.Button({  
  21.                 text:'导出Excel'  
  22.             }),  
  23.             '-',  
  24.             {  
  25.                 text:'导出word'  
  26.             }  
  27.         ]  
  28.     });  
  29.           
  30. });  

 

对于toolbar中的元素并非什么都可以,这个可以查看相关文档,当时相信通过上面和下面的例子已经将常用的元素都列出来了(当然像DateField这些我们没有列举)。对于toolbar有时候我们还这样来添加元素(为了使代码清晰,很多部分都是和上面对应的,例如上面的string文本和addText就是对应的):

 

[javascript] view plaincopy
  1. var tb=new Ext.Toolbar({  
  2.     id:'tb',  
  3.     renderTo:'divToolbar',  
  4.     autoWidth:true,  
  5.     autoHeight:true  
  6. });  
  7. tb.addText("查询条件:");  
  8. tb.addField(new Ext.form.TextField({name:'tf'}));//addField方法可以添加大部分form控件  
  9. tb.addSpacer();  
  10. tb.addButton({text:'搜索',iconCls:'btn_search'});  
  11. tb.addFill();  
  12. tb.addElement('divHtml');//参数就是一个html元素的id                
  13. tb.add(new Ext.Button({text:'导出Excel'}));  
  14. tb.addSeparator();  
  15. tb.add(new Ext.Button({text:'导出Word'}));  
  16. tb.add(new Ext.SplitButton({  
  17.     text:'帮助',  
  18.     arrorTooltip:'更多',  
  19.     menu:new Ext.menu.Menu({  
  20.         items:[  
  21.             {  
  22.                 text:'升级'  
  23.             },  
  24.             {  
  25.                 text:'关于'  
  26.             }  
  27.         ]     
  28.     })  
  29. }))  
  30. tb.addDom({tag:'i',html:'版权'});  
  31. tb.add('<b>copyright by cmjstudio<b>');  
  32. tb.doLayout();//重新布局,否则可以去掉tb中renderTo在这里写tb.render('divToolbar');不然是看不到上面的布局元素的  

 

注意:在Ext中一般给容器添加item时,可以使用其对应的add方法;也可以直接在构造函数中写(这一般有两种,我们在前面也说过,要么是只有主体的类[也就是只有{…}]里面可以指明xtype,要么是匿名的对象也[就是直接new XXX({})])。当然值得说明的是对于直接写在构造函数中只有主体的情况一般不指明xtype对于不同父容器也有默认的类型,除此之外有些特殊的情况(例如分隔符和toolbar的stringitem)也可以值写一个string类型的文本用引号引起来作为item。


题外话:在此再说一下,我会尽量将更多的东西放进来然后尽可能组织的有条理,例如有时候你可能看到有的相似的组件我们一个配置属性特别多而且很多注释,而有的却又属性很少又没有注释。那是因为我觉得我们只需要学会一个其他就会了,既然是学习没必要相同的东西都列出来,这样的话反而有时候不利于学习。

分享到:
评论

相关推荐

    EXTJS4 菜单栏

    EXTJS4 菜单栏

    ExtJs菜单导航功能,不在用左边功能树

    ExtJs菜单导航 可以不用左边的树功能导航,而在一个工具条上放一系列的菜单功能项

    Extjs4.1.1

    第三讲.ExtJS工具栏、菜单栏 第四讲.ExtJS最常用的表单之textfield控件 第五讲.ExtJs最常用表单组件Number、CheckBox、Radio 第六讲.ExtJs最常用表单组件ComboBox、time、date 第七讲.ExtJS面板Panel 第八讲....

    Ext3.X横向菜单导航栏

    Ext3.X横向菜单导航栏,已有json横向菜单数据,只要引入基本extjs、 css就可以使用,内有效果图。

    深入浅出Extjs4.1.1

    3、ExtJS工具栏、菜单栏0 Q' y0 E. y E 4、ExtJS最常用的表单之textfield控件4 |4 ]8 ~/ d3 Y& k# X 5、ExtJs最常用表单组件Number、CheckBox、Radio* s, r% ~+ k; y# W 6、ExtJs最常用表单组件ComboBox、time、date...

    ExtJS-3.4.0系列目录

    一、基础篇 1、Ext JS下载及配置 2、基本功能  2.1、Ext.MessageBox消息框  2.2、Ext.window.MessageBox 3、工具栏和菜单栏  3.1、Ext.toolbar.Toolbar工具栏  3.2、Ext.menu.Menu菜单栏 4、表单

    Extjs学习笔记之四 工具栏和菜单

    本文介绍在桌面程序开发中很常用也很简单的工具栏和菜单,但是在通常的web开发中,要实现好工具栏和菜单并非易事,然而extjs使我们能够用类似桌面程序开发的方法来开发web的工具栏和菜单。

    ExtJS 常用组件样式修改

    这里主要介绍了ExtJS常用组件的样式修改,包括工具栏样式修改、菜单样式修改、树形菜单样式修改、表格样式修改、按钮样式修改等。

    extjs后台界面模板3.zip

    extjs后台界面模板,实现了机构、用户、角色、权限模块的界面。顶部为菜单栏,中间分左、右两部分,左侧为机构树,右侧为查询列表,可动态添加、修改、删除机构节点。

    精通JS脚本之ExtJS框架.part2.rar

    本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、...

    深入浅出ExtJS PDF 扫描版

    内容简介 ...第9章 工具栏和菜单 第10章 数据存储与传输 第11章 实用工具 第12章 一个完整的EXT应用 第13章 通过Ext Framework合理地应用EXT 附录A EXT常见问题 附录B EXT对AIR的支持 附录C EXT的版本变迁

    深入浅出ExtJS学习PDF 文档下载

    内容简介 ...第9章 工具栏和菜单 第10章 数据存储与传输 第11章 实用工具 第12章 一个完整的EXT应用 第13章 通过Ext Framework合理地应用EXT 附录A EXT常见问题 附录B EXT对AIR的支持 附录C EXT的版本变迁

    轻松搞定Extjs_原创

    二、Viewport的基本使用 221 三、小结 226 第二十九章:综合项目 227 一、概述 227 二、数据库设计 228 三、持久层封装 229 四、DAO 235 五、业务层 238 六、控制器Action 242 七、Spring配置文件 249 八、主界面 ...

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

    3.4 实现工具栏和菜单栏 3.4.1 认识Ext.toolbar.Toolbar 3.4.2 只包含按钮的简单工具栏 3.4.3 包含多种元素的复杂工具栏 3.4.4 启用和禁用工具栏 3.4.5 认识Ext.menu.Menu菜单 3.4.6 最简单的菜单栏 3.4.7 ...

    ExtJs详细介绍

    ExtJs的详细介绍, 第一章 起步 第二章 Ext概览 第三章 表单 第四章 按钮、菜单和工具栏 第五章 使用grid显示数据 第六章 Editor Grids(可编辑表格) 第七章 layout(布局) 第八章 Tree(树)

    Extjs教程_第四章_按钮、菜单和工具栏(2)

    这是我在网上看到的好东东,和大家分享下,个人认为对extjs学习很有帮助!

    ExtJs6 Desktop

    本桌面拓展自ExtJs6.0 DeskTop Demo 主要作如下修改: 1. 修改提示宽度不能自适应问题 2. 增加桌面图标自适应换行 3. 增加桌面图标拖动 4. 解决桌面图标拖动后闪屏问题 5. 桌面背景默认拉伸 6. 增加中文支持文件 7. ...

    深入浅出ExtJS第2版

    深入浅出ExtJS第2版+源码..1 下载EXT发布包 1 1.2 如何查看EXT自带的API和示例 1 1.3 为什么有些示例必须放在服务器上 才能看到效果 2 1.4 Hello World 2 1.4.1 直接使用下载的发布包 2 1.4.2 在项目中使用EXT...

    精通JS脚本之ExtJS框架.part1.rar

    本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、...

    ExtJS TabPanel beforeremove beforeclose使用说明

    当前系统使用Extjs做为前端框架,系统首页布局采用border方式,左边手风琴式的菜单栏,中间区域为TabPanel容器,点击左边菜单栏内的对应菜单在中间区域添加对应的Panel,Panel嵌入添加的gridview; 当前问题是,想在...

Global site tag (gtag.js) - Google Analytics