`
zhangdaiping
  • 浏览: 129503 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ext.menu.ColumnMenu多列布局菜单

阅读更多
效果图:


Ext.menu.ColumnMenu类
/**
 * @class Ext.menu.ColumnMenu
 * @extends Ext.menu.Menu
 * 列布局菜单
 * @xtype columnmenu
 */
Ext.menu.ColumnMenu = function(config) {
    Ext.menu.ColumnMenu.superclass.constructor.call(this, config);
    var cols = [];
    Ext.each(this.columns, function(c) {
        cols.push(Ext.apply(c, {
            xtype: 'menu',
            hidden: false,
            hideMode: 'display',
            floating: false
        }));
    }, this);
    this.colCt = new Ext.Container({
        layout: 'column',
        width: this.menuWidth,
        items: cols
    });
    this.add(this.colCt);
};

Ext.extend(Ext.menu.ColumnMenu, Ext.menu.Menu, {
    cls: 'x-columnmenu',

    layout: {
        type: 'menu',
        itemTpl: new Ext.XTemplate('<li id="{itemId}" class="{itemCls}"></li>')
    },

    /**
     * @cfg {Number} menuWidth 菜单宽度,默认300px
     */
    menuWidth: 300,

    /**
     * @cfg {Array} columns 菜单列
     */
    
    beforeDestroy: function() {
        this.colCt.destroy();
    }
});

Ext.reg('columnmenu', Ext.menu.ColumnMenu);


测试页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>ColumnMenu Example</title>

    <!-- ** CSS ** -->
    <!-- base library -->
    <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
    
    <!-- Common Styles for the examples --> 
    <link rel="stylesheet" type="text/css" href="../shared/examples.css"/> 

    <!-- ** Javascript ** -->
    <!-- ExtJS library -->
    <script type="text/javascript" src="../extjs/adapter/ext/ext-base-debug.js"></script>
    <script type="text/javascript" src="../extjs/ext-all-debug.js"></script>
    <script type="text/javascript" src="../extjs/locale/ext-lang-zh_CN.js"></script>

    <!-- extensions -->
    <!-- page specific -->
    <script type="text/javascript" src="columnmenu.js"></script>
</head>
<body>

<h1>Ext.menu.ColumnMenu</h1>

<div style="border: 3px solid #C3DAF9; height: 300px; width: 650px;">
    <div id="toolbar"></div>
</div>

<br /><br /><br /><br /><br />

</body>
</html>


测试样例JS
Ext.onReady(function() {
    Ext.QuickTips.init();
    var menu = new Ext.menu.ColumnMenu({
        menuWidth: 400,
        columns: [{
            columnWidth: .33,
            items: [{
                text: 'I like Ext',
                handler: onItemClick
            }, {
                text: 'I like Ext',
                handler: onItemClick
            }, {
                text: 'I like Ext',
                handler: onItemClick
            }, {
                text: 'I like Ext',
                handler: onItemClick
            }]
        }, {
            columnWidth: .33,
            items: [{
                text: 'Aero Glass',
                checked: true,
                group: 'theme',
                checkHandler: onItemCheck
            }, {
                text: 'Vista Black',
                checked: false,
                group: 'theme',
                checkHandler: onItemCheck
            }, {
                text: 'Gray Theme',
                checked: false,
                group: 'theme',
                checkHandler: onItemCheck
            }, {
                text: 'Default Theme',
                checked: false,
                group: 'theme',
                checkHandler: onItemCheck
            }]
        }, {
            columnWidth: .33,
            items: [{
                text: '<b>Bold</b>',
                handler: onItemClick
            }, {
                text: '<i>Italic</i>',
                handler: onItemClick
            }, {
                text: '<u>Underline</u>',
                handler: onItemClick
            }]
        }]
    });

    var tb = new Ext.Toolbar();
    tb.render('toolbar');
    tb.add({
        text: 'Button w/ Menu',
        menu: menu
    });
    tb.doLayout();

    function onItemClick(item) {
        msg('Menu Click', 'You clicked the "{0}" menu item.', item.text);
    }

    function onItemCheck(item, checked) {
        msg('Item Check', 'You {1} the "{0}" menu item.', item.text, checked ? 'checked' : 'unchecked');
    }

    var msgCt;

    function createBox(t, s) {
        return ['<div class="msg">', '<div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div>', '<div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc"><h3>', t, '</h3>', s, '</div></div></div>', '<div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div>', '</div>'].join('');
    }

    function msg(title, format) {
        if (!msgCt) {
            msgCt = Ext.DomHelper.insertFirst(document.body, {
                id: 'msg-div'
            }, true);
        }
        msgCt.alignTo(document, 't-t');
        var s = String.format.apply(String, Array.prototype.slice.call(arguments, 1));
        var m = Ext.DomHelper.append(msgCt, {
            html: createBox(title, s)
        }, true);
        m.slideIn('t').pause(1).ghost("t", {
            remove: true
        });
    }
});

分享到:
评论

相关推荐

    extjs-Ext.ux.form.LovCombo下拉框

    它提供了丰富的组件库,包括表格、窗口、面板、菜单等,而`Ext.ux.form.LovCombo`就是EXTJS生态系统中的一员。 在压缩包子文件的文件名称列表中提到的"extjs下拉",很可能包含了EXTJS下拉框相关的示例代码、样式...

    Ext.get与Ext.fly的区别

    - **多次操作时效率较低**:如果需要对同一个DOM元素进行多次操作,则每次调用`Ext.fly`都会重新创建`Ext.Element`对象,不如`Ext.get`高效。 #### 使用场景分析 - 当需要对DOM元素进行频繁操作时,推荐使用`Ext....

    ext.ux.menu.storemenu.zip

    总结起来,`ext.ux.menu.storemenu.zip` 提供了一个基于 ExtJS 的动态菜单解决方案,它利用了数据存储的功能来创建可扩展和动态的菜单系统。这个组件对于那些需要根据用户角色、权限或动态数据来构建菜单的 Web 应用...

    Ext.data.Store的基本用法

    ### Ext.data.Store的基本用法详解 #### 一、Ext.data.Store简介 `Ext.data.Store`是ExtJS框架中用于管理数据的核心组件之一。它主要负责数据的存储、加载、更新等操作,并且提供了多种方法来方便地处理这些数据。...

    Ext.get与Ext.fly 的区别

    在阅读《Ext_Core手册.pdf》时,可以深入研究EXTJS的核心概念和API,了解更多关于`Ext.get`和`Ext.fly`的底层实现以及它们在不同场景下的应用策略。同时,理解EXTJS中的`Element`类和DOM操作对于提升EXTJS应用的性能...

    EXT.form组件

    2. `checkbox`:`Ext.form.Checkbox`是用于创建复选框的组件,用户可以选择或取消选择多个选项。 3. `combo`:`Ext.form.ComboBox`是下拉列表框组件,允许用户在预设的选项中进行选择,同时可以提供搜索功能以便...

    org.restlet.ext.spring.jar

    org.restlet.ext.spring.jar

    Ext.ux.SwfUploadPanel.js

    `Ext.ux.SwfUploadPanel.js`是这样一个基于ExtJS和SwfUpload技术的插件,它实现了多文件上传的功能。这篇文章将深入探讨这个插件的工作原理、主要特点以及如何在实际项目中应用。 首先,`ExtJS`(全称为EXT ...

    Ext.Store的获取方法

    在Ext.js中,`Ext.Store`是用来管理数据的类,它通常与各种UI组件(如Grid、ComboBox等)关联,用于存储和检索数据。然而,获取`Ext.Store`的方式并不像获取其他Ext组件那样直接,因为Store并不是一个具有可视界面的...

    Ext.js教程和Ext.js API

    Ext.js 是一个强大的JavaScript库,专门用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件和数据绑定功能,使得开发者可以构建出具有桌面应用级别的交互式网页应用。本教程和API文档聚焦于Ext.js 3.0版本...

    extjs中Ext.Panel和TreePanel 组件动态加载本地页面数据

    在EXTJS这个强大的JavaScript框架中,`Ext.Panel`和`TreePanel`是两个非常重要的组件,它们被广泛用于构建复杂的用户界面。这篇文章将探讨如何在这些组件中动态加载本地页面数据,以提升用户体验并实现灵活的数据...

    一个简单的Ext.Window中插入图片的例子

    在Ext JS这个强大的JavaScript框架中,`Ext.Window`是一个常用组件,用于创建浮动、可弹出的窗口。在Web应用程序中,我们常常需要在这些窗口中展示各种内容,包括文字、表格、按钮,当然还有图片。本文将详细介绍...

    EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档

    EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档...

    vbe6ext.olb

    运行Microsoft office时,vbe6ext.olb不能加载

    ext-tree.rar_ext_ext tr_ext tre_ext.tr_ext.tree

    4. **右键菜单**:实现右键菜单(Ext.menu.Menu),定义菜单项,绑定点击事件处理函数。 5. **事件监听**:监听TreePanel的`contextmenu`事件,当用户右键点击节点时触发,显示右键菜单。 6. **数据库操作**:在...

    Ext3.2的Ext.data.Store类和Ext.Ajax类的实际运用

    环境:Window XP Sp2、Tomcat 6.0、...关于Ext.data.Store类,我们可以看出:该框架提供了客户端缓存的功能--这对于我们框架系统是非常有帮助的。本示例代码注释非常详细。 阅读对象:需要使用Ext框架进行Web开发的人员

    fp40ext.dll无法加载安装程序库

    标题 "fp40ext.dll无法加载安装程序库" 描述了一个常见的系统错误,涉及的是一个动态链接库(DLL)文件fp40ext.dll在尝试执行或加载时出现问题。DLL文件是Windows操作系统中的一种共享库,它包含了一系列可供多个...

    EXT dojochina文本框示例Ext.form.TextField.rar

    在本示例中,"EXT dojochina文本框示例Ext.form.TextField.rar"是一个压缩包,包含了EXT框架中关于`Ext.form.TextField`组件的示例代码。 `Ext.form.TextField`是EXT框架中的一个核心组件,用于创建基本的输入字段...

    Ext.window从右下角弹出/隐藏

    ### Ext.window从右下角弹出/隐藏:深入解析与实现 #### 一、概述 在Web应用开发中,为了提升用户体验,开发者经常会利用各种UI框架来实现丰富的交互效果。ExtJS作为一款成熟且功能强大的JavaScript框架,在这方面...

Global site tag (gtag.js) - Google Analytics