当前位置: 首页 > 编程日记 > 正文

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

Coolite Toolkit里的Menu控件和其他的.NET Web控件不一样,如果只是设计好了Menu或是通过程序初始化菜单项,菜单是不会呈现在界面上的,因为Coolite Toolkit规定Menu控件需要一个容器来做依托,而这个让Menu依托的控件就是MenuPanel,下面拖拽出的MenuPanel控件所生成的html编码:
ContractedBlock.gifExpandedBlockStart.gifCode
<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);
}

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

转载于:https://www.cnblogs.com/AndySong/archive/2009/10/31/1593615.html

相关文章:

解决Neither the JAVA_HOME nor the JRE_HOME environment variable is defined问题

问题描述&#xff1a; 在cmd窗口使用 startup 命令启动Tomcat时&#xff0c;出现 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program 错误提示&#xff0c;如下如所示。 解…

在 Windows XP 中,无法使用 Windows 图片和传真查看器来查看图片

在 Microsoft Windows XP 中试图使用 Windows 图片和传真查看器查看图片时&#xff0c;图片未按预期显示。不过&#xff0c;当使用 Microsoft 画图工具查看图片时&#xff0c;图片会按预期显示。注意&#xff1a;Windows 资源管理器中可能不会显示某些图片缩略图。 发生这种现象…

前端常用正则表达式

前端常用的正则表达式 通过一些例子来学习正则表达式摘录&#xff0c;js正则函数match、exec、test、search、replace、split //去除首尾的‘/’input input.replace(/^\/*|\/*$/g,);javascript:; 、javascript:void(0)javascript:;.match(/^(javascript\s*\:|#)/);//["j…

BeanShell使用json.jar包处理Json数据

环境准备 ①Jmeter版本 &#xff0c;JDK ②前置条件&#xff1a;将json.jar包置于..\lib\下&#xff0c; 如果还是报错&#xff0c;可以将该jar包添加到测试计划的Library中&#xff1b;否则会报&#xff1a;Typed variable declaration : Class: JSONObject not found in nam…

ES6 let和const 命令

ES6 let 和 const 命令1. 变量声明2. 变量提升问题3. 暂时性死区(TDZ)4. 块级作用域4.1 为什么需要块级作用域&#xff1f;4.2 ES6的块级作用域4.3 块级作用域和函数声明1. 变量声明 ES5 只有两种声明变量的方法&#xff1a;var命令和function命令。 ES6 新增了let命令和cons…

jQuery的Tab插件 Tabtastic

Tabtastic 是一个 jQuery 用来实现 Tab 窗体的插件&#xff0c;支持 Tab 嵌套以及动态内容加载。 下面是源文件下载&#xff1a;Tabtastic转载于:https://www.cnblogs.com/zhulidong/archive/2009/11/01/1593753.html

另类×××应用(三):不花一分钱,实现总部和多分支机构网络互联

[本文高清PDF版&#xff0c;在文章最后的附件提供下载&#xff0c;欢迎下载查阅] 【需求分析】&#xff08;一&#xff09;我们面临的问题。Freesky公司是一家在台湾和大陆都有很多分支机构的大饼油条连锁经销商&#xff0c;大陆总部在宁波&#xff0c;在宁波、温州、上…

[SDOI2017]天才黑客

传送门 Description 给出一张带边权的有向图&#xff0c;每个边都上都有一个字符串&#xff08;给出对应Trie树上的节点&#xff09;&#xff0c;一条路径的长度为路径上的边权之和相邻两条边的字符串的lcp长度之和。 求从1到其它节点的最短路 Solution 预备部分 首先&#…

spine - unity3D(摘自博主softimagewht)

摘自&#xff1a;&#xff08;博主 http://www.cnblogs.com/softimagewht/p/4149118.html&#xff09; //skeletonDataSkeletonAnimation skeletonAnimation GetComponent<SkeletonAnimation>();Debug.Log(skeletonAnimation.name);//获取角色名Debug.Log(skeletonAnima…

Windows搜索工具 — Everything

everything 主页 &#xff1a;https://www.voidtools.com/zh-cn/ Everything&#xff1a;是 Windows 上一款搜索引擎&#xff0c;它能够基于文件名快速定文件和文件夹位置。 下载链接&#xff1a;https://www.voidtools.com/zh-cn/downloads/ —— END ——

向访客和爬虫显示不同的内容

为了提高网页的用户体验, 我们经常会做一些对搜索引擎不太友好的事情, 但某些情况下这并不是无法挽回的, 可以通过向自然人和搜索引擎机器人显示不同的内容来提供好的用户体验和 SEO. 听说本方法会触犯搜索引擎的一些操作原则, 有可能被被各搜索引擎处罚, 甚至删除网站. 所以我…

php取url后的文件名

<? $a"http://www.esyu.com.cn/images/aaa.gif"; echo substr($a,strrpos($a,"/")1); ?>

ES6 函数的扩展

ES6 函数的扩展1. 函数参数的默认值1.1 基本用法1.2 与解构赋值默认值结合使用1.3 参数默认值的位置1.4 函数的length属性2. rest参数2.1 rest参数2.2 arguments对象3. 函数的name属性4. 箭头函数1. 函数参数的默认值 1.1 基本用法 ES6之前&#xff0c;不能直接为函数的参数指…

Mycat分片规则详解

1、分片枚举 通过在配置文件中配置可能的枚举 id&#xff0c;自己配置分片&#xff0c;本规则适用于特定的场景&#xff0c;比如有些业务需要按照省份或区县来做保存&#xff0c;而全国省份区县固定的&#xff0c;这类业务使用本条规则&#xff0c;配置如下&#xff1a; <ta…

COGS 2769. mk去撸串

【题目描述】 今天 mk 去撸串 ,恰逢店里活动 ,如果吃一种串串超过记录, 可以 赠送 328, 所以 mk 想知道他吃的串串中吃的最多的种类是什么. 【输入格式】 第一行一个整数 1<n<50000; 然后有 n 行长度<100 的全部由小写字母组成的字符串;每个代表一种串串 【输出格式】…

C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

由于种种原因&#xff0c;我们有时需要从互联网上抓取一些资料&#xff0c;有些页面可以直接打开&#xff0c;而有些页面必登录之后才能打开。本文介绍的是使用 HttpWebRequest 和 HttpWebResponse 自动填写提交 ASP.NET 表单并保持 Session 和 Cookie 的一个完整的例子。这里涉…

rman备份后为什么要同时备份归档日志

今天在CU上看到有人问一个问题&#xff1a;rman备份后为什么要同时备份归档日志呢&#xff0c;既然rman是物理备份&#xff0c;所有数据已经都备份&#xff0c;再次备份归档日志何用&#xff1f;思考了一下&#xff0c;认为有必要记录一下为什么要备份归档日志&#xff1a;其实…

Angular响应式表单及表单验证

1. 什么是响应式表单&#xff1f; 响应式表单提供了一种模型驱动的方式来处理表单输入&#xff0c;其中的值会随时间而变化。 响应式表单使用显示的&#xff0c;不可变的方式&#xff0c;管理表单在特定时间点上的状态。对表单状态的每一次变更都会返回一个新的状态&#xff…

void *指针的加减运算

1、手工写了一个程序验证void *指针加减运算移动几个字节&#xff1a; //本程序验证空类型指针减1移动几个字节 #include <stdio.h> int main(int argc, char *argv[]) {int a10,b20;int *pa&a;void …

ASP.NET运行原理

一个ASP.NET的应用程序是开始于IIS的. 当你请求一个包含ASP.NET应用的网址时,IIS接受到请求(IIS是WEB服务守候进程),IIS收到请求后,会根据请求者请求的主机头或者IP或者端口号来找到对应的站点. 当找到站点后,如果你请求的资源是以ASPX为结尾的WEBFORM,时,IIS会将控制权交给一…

vue 树形下拉框 亲测 好用

https://vue-treeselect.js.org/ 顺带说一个开发中使用这个组件遇到的问题&#xff0c;关于回显之后无法修改的问题 找了很长时间 原因是数据类型导致的问题&#xff0c;数组里面应该是数字类型&#xff0c;直接转数组的话里面的值都是字符串&#xff0c;所有得额外做处理了转…

通过xmanager远程连接redhat linux as 5

通过xmanager远程连接redhat linux as 5 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />rhel5与rhel4不同的地方是&#xff0c;rhel5里没有/etc/X11/gdm/这个目录&#xff0c;rhel5的gdm的配置文件放在这里/usr/share/gdm/defa…

bzoj 1264: [AHOI2006]基因匹配Match (树状数组优化dp)

链接&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id1264 思路&#xff1a; n大小为20000*5&#xff0c;而一般的dp求最长公共子序列复杂度是 n*n的&#xff0c;所以我们必须优化。 题目说了一个数会出现5次&#xff0c;那么我们可以预处理得到 第一个序列a[]每…

C语言第二次博客作业---分支结构

C语言第二次博客作业---分支结构 一&#xff0c;PTA实验作业 题目1.计算分段函数 本题目要求计算下列分段函数f(x)的值 1.代码 double x, result;scanf("%lf", &x);if (x >0)result sqrt(x);elseresult pow( x 1, 2) 2 * x 1 / x;printf ("f(%.2f) …

Lazy.NET

.NET 4.0里&#xff0c;在System名称空间中多了一个名为Lazy<T>新泛型类&#xff0c;该类的作用正如其名称所示。下面给出了一个使用的例子&#xff1a;1 var lazy newLazy<IList<OrderRow>>(2 () >3 {4 var rows //get order rows;5 returnrows;6 });7 8…

Angular 组件交互

Angular 组件交互 组件交互&#xff1a; 组件通讯&#xff0c;让两个或多个组件之间共享信息。 使用场景&#xff1a; 当某个功能在多个组件中被使用到时&#xff0c;可以将该特定的功能封装在一个子组件中&#xff0c;在子组件中处理特定的任务或工作流。 交互方式&#xff1…

java-在应用中获取spring定义的bean

因为写了些bean作为quartz的任务用spring配置了&#xff0c;但有些时候需要在别的类中使用这些bean&#xff0c;没有太仔细去研究spring&#xff0c;依稀记得有个getBean&#xff0c;到网上g了一把&#xff0c;发现方法不止一种&#xff0c;选了一种最简单的方法&#xff1a; 主…

Enterprise Architect 7 入门教程 1

一&#xff0e; 简介生命周期软件设计方案——Enterprise Architect是以目标为导向的软件系统。它覆盖了系统开发的整个周期&#xff0c;除了开发类模型之外&#xff0c;还包括事务进程分析&#xff0c;使用案例需求&#xff0c;动态模型&#xff0c;组件和布局&#xff0c;系…

FCS省选模拟赛 Day5

传送门 Solution Code #include<bits/stdc.h> #define ll long long #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) inline int read() {int x0,f1;char chgetchar();while(ch<0||ch>9){if(ch-)f-1;chgetchar();}while(ch>…

python中的单例模式

单例模式&#xff08;Singleton Pattern&#xff09;是一种常用的软件设计模式&#xff0c;该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中&#xff0c;某个类只能出现一个实例时&#xff0c;单例对象就能派上用场。 比如&#xff0c;某个服务器程序的…