Coolite Toolkit学习笔记五:常用控件Menu和MenuPanel

 Coolite Toolkit里的Menu控件和其他的.NET Web控件不一样,如果只是设计好了Menu或是通过程序初始化菜单项,菜单是不会呈现在界面上的,因为Coolite Toolkit规定Menu控件需要一个容器来做依托,而这个让Menu依托的控件就是MenuPanel,下面拖拽出的MenuPanel控件所生成的html编码:
ExpandedBlockStart.gif
<ext:MenuPanel ID="MenuPanel1" runat="server" Height="300" Title="Menu" Width="185">
    
<Menu>
        
<Items>
            
<ext:MenuItem ID="MenuItem1" runat="server" Text="Item1">
                
<Menu>
                    
<ext:Menu ID="Menu2" runat="server">
                        
<Items>
                            
<ext:MenuItem ID="MenuItem2" runat="server" Text="SubItem1">
                            
</ext:MenuItem>
                            
<ext:MenuItem ID="MenuItem3" runat="server" Text="SubItem2">
                            
</ext:MenuItem>
                        
</Items>
                    
</ext:Menu>
                
</Menu>
            
</ext:MenuItem>
            
<ext:MenuItem ID="MenuItem4" runat="server" Text="Item2">
            
</ext:MenuItem>
            
<ext:MenuItem ID="MenuItem5" runat="server" Text="Item3">
            
</ext:MenuItem>
            
<ext:MenuItem ID="MenuItem6" runat="server" Text="Item4">
            
</ext:MenuItem>
        
</Items>
    
</Menu>
</ext:MenuPanel>

      从上面可以明显的看出,MenuPanel里可以放置菜单项(MenuItem),如果有子菜单,那么子菜单则对应于一个Menu控件,子菜单里的菜单项则又是通过菜单项(MenuItem)来体现。如下是我修改后的一个菜单html编码:
<ext:MenuPanel runat="server" Height="300" Title="帐套管理" Width="185">
    
<Menu runat="server">
        
<Items>
            
<ext:MenuItem runat="server" Text="新增帐套" Icon="Add">
                
<Listeners>
                    
<Click Handler="JavaScript:window.location.href='#';" />
                
</Listeners>
            
</ext:MenuItem>
            
<ext:MenuItem runat="server" Text="维护帐套" Icon="Cmy"/>
            
<ext:MenuItem runat="server" Text="帐套管理" Icon="Database">
                
<Menu>
                    
<ext:Menu runat="server">
                        
<Items>
                            
<ext:MenuItem  runat="server" Text="备份帐套" Icon="DatabaseSave">
                                
<Listeners>
                                    
<Click Handler="JavaScript:window.open('#');" />
                                
</Listeners>
                            
</ext:MenuItem>
                            
<ext:MenuItem runat="server" Text="恢复帐套" Icon="DatabaseGo">
                                
<Listeners>
                                    
<Click Handler="JavaScript:window.open('#');" />
                                
</Listeners>
                            
</ext:MenuItem>
                        
</Items>
                    
</ext:Menu>
                
</Menu>
            
</ext:MenuItem>
        
</Items>
        
<Listeners>
            
<ItemClick Fn="onItemClick" />
        
</Listeners>
    
</Menu>
</ext:MenuPanel>
<script type="text/javascript">
    
function onItemClick(menuItem) {
        Ext.Msg.alert(
"操作提示""当前点击项内容:" + menuItem.text);
    }
 
</script>
                        

      像Tree、Menu等类似的控件,我个人认为主要就是弄清楚他们内部的层次结构,不管是通过界面设计还是通过直接Code创建他们,最终得到的结果都是一样,如上菜单显示效果,同样可以通过如下程序代码来创建:
protected void Page_Load(object sender, EventArgs e)
{
    
if (!IsPostBack)
    {
        CreateMenuPanel();
    }
}

private void CreateMenuPanel()
{
    MenuPanel menuPanel 
= new MenuPanel();
    menuPanel.Title 
= "帐套管理";
    menuPanel.Width 
= new Unit(180);

    Coolite.Ext.Web.MenuItem addAccount 
= new Coolite.Ext.Web.MenuItem("新增帐套");
    addAccount.Icon 
= Icon.Add;
    addAccount.Listeners.Click.Handler 
= "JavaScript:window.location.href='#';";
    
    Coolite.Ext.Web.MenuItem whAccount 
= new Coolite.Ext.Web.MenuItem("维护帐套");
    whAccount.Icon
=Icon.Cmy;

    Coolite.Ext.Web.MenuItem accountManage 
= new Coolite.Ext.Web.MenuItem("帐套管理");
    accountManage.Icon 
= Icon.Database;

    Coolite.Ext.Web.Menu subMenu 
= new Coolite.Ext.Web.Menu();

    Coolite.Ext.Web.MenuItem backMenuItem 
= new Coolite.Ext.Web.MenuItem("备份帐套");
    backMenuItem.Icon 
= Icon.DatabaseSave;
    backMenuItem.Listeners.Click.Handler 
= "JavaScript:window.open('#')";
    subMenu.Items.Add(backMenuItem);

    Coolite.Ext.Web.MenuItem reMenuItem 
= new Coolite.Ext.Web.MenuItem("恢复帐套");
    reMenuItem.Icon 
= Icon.DatabaseGo;
    reMenuItem.Listeners.Click.Handler 
= "JavaScript:window.open('#')";
    subMenu.Items.Add(reMenuItem);

    accountManage.Menu.Add(subMenu);

    menuPanel.Menu.Items.Add(addAccount);
    menuPanel.Menu.Items.Add(whAccount);
    menuPanel.Menu.Items.Add(accountManage);
    menuPanel.Menu.Listeners.ItemClick.Fn 
= "onItemClick";

    accountDiv.Controls.Add(menuPanel);
}

      本笔记暂时记录于此,更多高级应用需要大家去挖掘,欢迎各位朋友留下自己的看法和使用心得。




本文转自 beniao 51CTO博客,原文链接:http://blog.51cto.com/beniao/240069,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows命令提示符_如何个性化Windows命令提示符

windows命令提示符Command line interfaces can be downright boring and always seem to miss out on the fresh coats of paint liberally applied to the rest of Windows. Here’s how to add a splash of color to Command Prompt and make it unique. 命令行界面可能非常…

android-api28转换到api19-不能编译

安装出现错误- rootponkan:/ # pm install /mnt/usb/sda1/app-debug.apkpkg: /mnt/usb/sda1/app-debug.apk Failure [INSTALL_FAILED_OLDER_SDK]查看系统和api版本 rootponkan:/ # getprop ro.build.version.release 5.1.1 rootponkan:/ # getprop ro.build.version.sdk 22将ap…

Java多线程编程 — 锁优化

2019独角兽企业重金招聘Python工程师标准>>> 阅读目录 一、尽量不要锁住方法 二、缩小同步代码块&#xff0c;只锁数据 三、锁中尽量不要再包含锁 四、将锁私有化&#xff0c;在内部管理锁 五、进行适当的锁分解 正文 并发环境下进行编程时&#xff0c;需要使用锁机…

Android Ap 开发 设计模式第六篇:原型模式

Prototype Pattern 名称由来 不是利用类来产生实例对象&#xff0c;而是从一个对象实例产生出另一个新的对象实例 &#xff0c;根据被视为原型的对象实例 &#xff0c;建立起的另一个新的对象实例就称为原型模式&#xff08;Ptototype Pattern&#xff09;。 需求场景 种类过多…

netty实现客户端服务端心跳重连

前言&#xff1a; 公司的加密机调度系统一直使用的是http请求调度的方式去调度&#xff0c;但是会出现网络故障导致某个客户端或者服务端断线的情况&#xff0c;导致很多请求信息以及回执信息丢失的情况&#xff0c;接着我们抛弃了http的方式&#xff0c;改为Tcp的方式去建立客…

为什么您仍然不应该购买《星球大战:前线II》

If you’ve been following video game news at all for the last couple of weeks, you’ve probably heard that EA’s Star Wars: Battlefront II is having some teething troubles. EA has backpedaled to avoid more controversy, but we’re here to say: don’t fall f…

quantum_如何从Firefox Quantum删除Pocket

quantumFirefox Quantum has deep integration with the Pocket read-it-later service, which is now owned by Mozilla. You’ll see a Pocket page action in the address bar, a “View Pocket List” feature in the Library, and recommended articles from Pocket on th…

Couchbase概述

Couchbase概述 Couchbase概述 Couchbase概述Couchbase最早叫Membase&#xff0c;是由Memcached项目组的一些头目另立的山头。2011年与CouchDB合并&#xff0c;正式命名为Couchbase。2013年&#xff0c;作为NoSQL技术初创企业&#xff0c;拿到了2500万美元的D轮投资。截稿时止&a…

Windows 2012 - Dynamic Access Control 浅析

Windows 2012相对于前几个版本而已&#xff0c;做出了大量的改进&#xff0c;尤其体现在安全性和虚拟化方面。Dynamic Access Control ( 动态访问控制&#xff09;是微软在文件服务器的访问控制上的新功能&#xff0c;极大的提高了安全性和灵活性。经过一天的研究学习&#xff…

windows rt_如何在Windows RT上轻松将网站添加到Flash白名单

windows rtMicrosoft’s Surface RT and other Windows RT-based machines include the Flash browser plugin, but it only runs on websites Microsoft has whitelisted. We have covered how you can add any website to the Flash whitelist, but now there’s an easier w…

chromebook刷机_您可以购买的最好的Chromebook,2017年版

chromebook刷机While once considered a novelty item by many tech enthusiasts, Chromebooks have broken out of the “just a browser” mold and become legitimate laptops. They’re full-featured, lightweight machines that can do everything most users need them …

Jmeter JDBC请求-----数据库读取数据进行参数化 通过SSH跳板机连接数据库

前期准备&#xff1a; jdbc驱动&#xff1a;mysql-connector-java-5.1.7-bin.jar Jmeter 要链接MySQL数据库&#xff0c;首选需要下载mysql jdbc驱动包&#xff08;注&#xff1a;驱动包的版本一定要与你数据库的版本匹配&#xff0c;驱动版本低于mysql版本有可能会导致连接失败…

Exchange server 2010 beta安装部署流程

本文使用了微软公开发布的exchange server 2010 beta进行部署测试。这篇文档将用到下列产品 windows server 2008 64bit enterprise AD function at windows server 2008 exchange server 2010 beta ----------该exchange server 2010 beta版本属于早期版本&#xff0c;目前最新…

usb 驱动修复_您可以修复物理损坏的USB驱动器吗?

usb 驱动修复Sometimes accidents happen to a USB drive, and you find yourself in a very bad position when your only copy of an important document is on there. When something like this happens, is it possible to fix a physically broken USB drive? Today’s S…

大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)

大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5) 上一节中&#xff0c;我们讲解了逻辑回归的优化&#xff0c;本节的话我们讲解逻辑回归做多分类问题以及传统的多分类问题&#xff0c;我们用什么手段解决。 先看一个场景&#xff0c;假如我们现在的数据集…

下载spotify音乐_如何在Spotify上播放更高质量的音乐

下载spotify音乐With Spotify Premium, you get access to higher quality music streaming. By default (and if you’re on the free plan), Spotify streams at 96kbps on mobile and 160kbps on your computer. At these sort of bitrates, you’ll hear a small but notic…

如何从终端打开Ubuntu Nautilus文件浏览器

Recently, we showed you how to open a directory in Terminal from within Nautilus. However, what if you’re working on the command line in Terminal and need to access the same directory in Nautilus? There’s an easy solution for that. 最近&#xff0c;我们向…

mysql 面试知识点笔记(七)RR如何避免幻读及非阻塞读、范式

2019独角兽企业重金招聘Python工程师标准>>> 表象&#xff1a;快照读&#xff08;非阻塞读&#xff09;--伪MVCC &#xff08;Multi-Version Concurrent Controll多版本并发控制&#xff09; 内在&#xff1a;next-key锁(record锁gap锁) rr serializabel 都支持gap锁…

pdf 奇数页插入页码_如何在Word 2013中的奇数页码上启动新部分

pdf 奇数页插入页码When working on a long document or a book in Word, it’s common to divide the document into sections or chapters. A common practice is to start each new section or chapter on an odd page. This is easily accomplished using sections in Word…

流水线上的思考——异步程序开发模型(2)

上一期我们讲了一个简单的流水线处理流程&#xff0c;正如我们在上期最后所说那样&#xff0c;这个简单的流水线处理流程对于后续有慢设备操作的业务来说&#xff0c;性能有可能偏低。今天我们来讨论一下如何提高性能的方法。首先让我们来大致区分一下一般业务的处理方式。目前…