Ext.NET 4.1 系统框架的搭建(后台) 附源码
Ext.NET 4.1 系统框架的搭建(后台) 附源码
代码运行环境:.net 4.5 VS2013 (代码可直接编译运行)
预览图:
分析图:
上面系统的构建包括三块区域:North、West和Center:
North负责显示系统信息,包括系统图片、当前时间、登录信息、退出登录等功能。
West负责显示菜单导航。
Center负责系统的核心业务处理(这里的功能是显示文件夹下的.txt文本名称,并提供修改和删除操作)。
下面详细介绍:
整个区域被放在Viewport下,布局方式为BorderLayout,该布局包含North、West和Center三块面板:
<ext:Viewport runat="server" ID="vp1" Layout="BorderLayout">
<items>
<ext:Panel ID="Panel1" runat="server" Region="North" Height="100">
//...
</ext:Panel>
<ext:Panel ID="WestPanel" runat="server" Region="West">
//...
</ext:Panel>
<ext:TabPanel ID="Pages" runat="server" Region="Center">
//...
</ext:TabPanel>
</items>
</ext:Viewport>
North部分:
<ext:Panel ID="Panel1" runat="server" Region="North" Height="100" Header="true" Border="false" Html="<img src='../Images/top.jpg'/>">
<BottomBar>
<ext:Toolbar ID="ToolbarBottom" runat="server">
<Items>
<ext:ToolbarFill ID="ToolbarFillBottom" runat="server" Width="200">
</ext:ToolbarFill>
<ext:ToolbarSeparator ID="ToolbarSeparator4" runat="server" Width="1" />
<ext:Label ID="tbShowTime" runat="server">
</ext:Label>
<ext:ToolbarSeparator ID="ToolbarSeparator1" runat="server" Width="1" />
<ext:ToolbarTextItem ID="textWelcome" runat="server">
</ext:ToolbarTextItem>
<ext:ToolbarSeparator ID="ToolbarSeparator3" runat="server" Width="1">
</ext:ToolbarSeparator>
<ext:Button ID="btnExit" runat="server" IconCls="icon-exit" Text="退出系统" ToolTip="退出系统">
<DirectEvents>
<Click OnEvent="btnExit_Click">
<Confirmation ConfirmRequest="true" Title="确认" Message="确实要退出系统吗?" />
<EventMask ShowMask="true" Msg="正在退出,请稍等 ..." />
</Click>
</DirectEvents>
</ext:Button>
</Items>
</ext:Toolbar>
</BottomBar>
</ext:Panel>
该部分对应的显示为:
tbShowTime为显示当前时间,textWelcome为当前登录的用户,还有一个退出当前登录事件:OnEvent="btnExit_Click"。
West部分:
这部分的构建是比较复杂的,首先
<ext:Panel ID="WestPanel" runat="server" Region="West" Width="150" > </ext:Panel>
这是一个最外层的大的面板,然后里面嵌入了多个小的面板,这些小的面板这里为TreePanel,
比如这里初始化2个TreePanel:
创建第1个TreePanel:
TreePanel Tpen1 = new TreePanel{};
创建第2个TreePanel:
TreePanel Tpen2 = new TreePanel{};
将2个TreePanel添加的最外层的大的面板中:
WestPanel.Add(Tpen1); WestPanel.Add(Tpen2);
对于每一个TreePanel下面还有节点,节点下面还有子节点,每个节点下面可以有多个子节点:
所以这里就需要两个方法,一个是创建节点的方法,一个是创建子节点的方法。当然也可以只写一个方法,因为创建节点的方法和创建子节点方法唯一的区别就是:创建子节点的时候需要将treeNode.Leaf的值设置为true,含义就是该子节点下面没有子节点了。
创建子节点的方法为:
private Node CreateChildNode(string url, string nodeid, string title, string description)
{
Node treeNode = new Node(); if (!string.IsNullOrEmpty(url))
{
treeNode.CustomAttributes.Add(new ConfigItem("url", this.Page.ResolveUrl(url)));
treeNode.Href = "#";
} treeNode.NodeID = nodeid;
treeNode.CustomAttributes.Add(new ConfigItem("hash", nodeid.GetHashCode().ToString()));
treeNode.Text = title;
treeNode.Qtip = description;
//如果是子节点,加上treeNode.Leaf = true;这句
//treeNode.Leaf = true;
return treeNode;
}
Center部分:
该部分为业务处理模块,对于West菜单栏所请求的信息都会在该部分显示,所有该部分需要加上鼠标右键关闭窗口的功能,包括:关闭所有窗口、除此之外全部关闭、关闭功能。
<ext:TabPanel ID="Pages" runat="server" Region="Center">
<Plugins>
<ext:TabCloseMenu ID="TabM1" runat="server" CloseTabText="关闭" CloseOtherTabsText="除此之外全部关闭"
CloseAllTabsText="关闭所有窗口" />
</Plugins>
</ext:TabPanel>
上面区域构建完成之后,仅仅是页面布局搭建完成,还有一个核心功能没有完成,那就是:当用户点击West部分的任意一个菜单时,需要在Center部分显示该请求。
这就需要用到TreePanel的点击处理请求:
TPen.Listeners.ItemClick.Handler = "if (record.data.url) { loadPage(#{Pages}, record); return false;}";
该功能是用户通过点击West部分面板,加载到TPen中去。
当然,还需要前台js代码来实现,前台js代码为:
<script type="text/javascript">
var loadPage = function (tabPanel, record) {
var tab = tabPanel.getComponent("node" + record.data.hash); if (!tab) {
tab = tabPanel.add({
id: "node" + record.data.hash,
title: record.data.text,
closable: true,
loader: {
url: record.data.url,
renderer: "frame",
loadMask: {
showMask: true,
msg: "Loading " + record.data.url + "..."
}
},
tbar: [
"-",
{
text: "刷新",
tooltip: "刷新",
handler: function () {
Ext.getCmp("node" + record.data.hash).reload(true)
},
iconCls: "icon-arrowrefresh"
},
"-"
],
autoScroll: true
});
} tabPanel.setActiveTab(tab);
}
</script>
重点注意一下加粗部分。
至此,所有工作都以及完成了,框架也搭建好了,剩下的就需要我们自己根据业务需求来写自己的核心业务模块就可以了。
在这里还需注意一个问题就是Ext.Net刚开源的时候,流行的破解办法是通过修改源代码,但是随着Ext.NET 2.x以及后续版本的发布,原作者没有公布源代码,所以导致将程序部署到公网是是需要收费的,会提示购买版权,还好Ext.NET.dll中提供的方法很容易破解,具体破解请参考:
Ext.NET 4.1版本破解方法:http://www.cnblogs.com/zhangtingzu/p/6137612.html
最后提供源码:(如果该地址不能下载,可以发邮件到我的邮箱:649727360@qq.com)
源码下载地址:http://download.csdn.net/detail/zhangting142857/9707318
Ext.NET 4.1 系统框架的搭建(后台) 附源码的更多相关文章
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
- 基于Docker的TensorFlow机器学习框架搭建和实例源码解读
概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码]
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码] 开始,我们有了一系列的解决方案,我们将动手搭建新系统吧. 用 ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
- Java并发包源码学习之AQS框架(四)AbstractQueuedSynchronizer源码分析
经过前面几篇文章的铺垫,今天我们终于要看看AQS的庐山真面目了,建议第一次看AbstractQueuedSynchronizer 类源码的朋友可以先看下我前面几篇文章: <Java并发包源码学习 ...
- 开源方案搭建可离线的精美矢量切片地图服务-8.mapbox 之sprite大图图标文件生成(附源码)
项目成果展示(所有项目文件都在阿里云的共享云虚拟主机上,访问地图可以会有点慢,请多多包涵). 01:中国地图:http://test.sharegis.cn/mapbox/html/3china.ht ...
- Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战
Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台- 什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...
- Flask框架(五) —— session源码分析
Flask框架(五) —— session源码分析 目录 session源码分析 1.请求来了,执行__call__方法 2.__call__方法 3.调用__call__方法 3.1.ctx = s ...
- 教你搭建SpringMVC框架( 更新中、附源码)
一.项目目录结构 二.SpringMVC需要使用的jar包 commons-logging-1.2.jar junit-4.10.jar log4j-api-2.0.2.jar log4j-core- ...
随机推荐
- 100天后 - 100-days-later
赛斯·高汀(Seth Godin)的博客: http://sethgodin.typepad.com/seths_blog/2013/04/100-days-later.html 面对着数以千计的图 ...
- 翻译-使用Spring WebService生成SOAP Web Service
原文链接:http://spring.io/guides/gs/producing-web-service/ 生成SOAP web service 该指南将带领你使用Spring创建一个基于SOAP的 ...
- jQuery实现放大镜效果
1.1.1 摘要 相信大家都见过或使用过放大镜效果,甚至实现过该效果,它一般应用于放大查看商品图片,一些电商网站(例如:凡客,京东商城,阿里巴巴等)都有类似的图片查看效果. 在接下来的博文中,我们将向 ...
- [HIMCM暑期班]第2课:建模
第二节课从最简单的模型开始入手:七桥问题. 首先,先去wikipedia上了解一些有关七桥问题的背景知识.http://en.wikipedia.org/wiki/Seven_Bridges_of_K ...
- java数学函数库 API(转)
原文地址:http://www.24xuexi.com/w/2011-11-08/98206.html 首先给大家看看Math类所提供的主要方法,下面的列表给出了Math类的主要方法,如果要理解Mat ...
- IOS 多线程05-OperationQueue 、GCD详解
注:本人是翻译过来,并且加上本人的一点见解. 1. 开始 目前在 iOS中有两套先进的同步 API 可供我们使用:操作队列OperationQueue和 GCD .其中 GCD 是基于 C 的底层 ...
- java source not found
今天的挑战是,为什么与源码明明放在本机,调试的时候却说source not found呢? 这个是因为,我重新建立了debug,然后没有选择对应的项目. 另外一个问题是,如果给底层的jar附上源码呢?
- CentOS Linux系统下安装Redis过程和配置参数说明
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/102.html?1455869303 安装过程: 代码如下: wget h ...
- 我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器
回到目录 AOP面向切面的编程,也称面向方面的编程,我更青睐于前面的叫法,将一个大系统切成多个独立的部分,而这个独立的部分又可以方便的插拔在其它领域的系统之中,这种编程的方式我们叫它面向切面,而这些独 ...
- PHP基础 创建
注意:1.网页文件放在wamp中的www文件下: 2.www文件下不能出现中文: 网页浏览的方法: 1.没有建立站点:localhost/文件所在位置 2.建立站点: (1)站点-新建站点-打开对话框 ...