项目中使用到了Extjs,使用了Extjs的边框布局,分为top,west,center。
左侧为菜单部分,最初直接写在JS文件中,今天看了一下,觉得这样写对于以后扩展来说不是特别好,但用什么去替换呢,想来想去还是用XML文件替换更方便一些,这样方便扩展,也方便以后添加一个新的菜单。
其实实现原理很简单,关键是C#对于XML文件的解析操作。
操作的第一步当然是要创建XML文件并制定规则:
<?xml version="1.0" encoding="utf-8" ?>
<menuroot>
<menu id="menu1" class="x-hidden" name="菜单一">
<info src="../images/jq.png" alt="菜单栏目一" id="menu1_jq" href="连接地址1" txt="菜单栏目一"/>
</menu>
<menu id="menu2" class="x-hidden" name="菜单二">
<info src="../images/contract.png" alt="菜单栏目二" id="menu2_myFocus" href="连接地址2" txt="菜单栏目一"/>
<info src="../images/contract.png" alt="菜单栏目二" id="menu2_list" href="连接地址3" txt="菜单栏目二"/>
</menu>
</menuroot>
此处定义了二个菜单,以及3个子栏目。在CS文件中只要按照此规则进行文件的读取即可。
public StringBuilder initMenu()
{
StringBuilder sb = new StringBuilder();
StringBuilder sbJs = new StringBuilder();
string str = "";
// 读取配置文件读取XML文件地址
string menuFile = System.Web.HttpRuntime.AppDomainAppPath.TrimEnd('\\') + System.Web.Configuration.WebConfigurationManager.AppSettings["menufilepath"];
XmlDocument doc = new XmlDocument();
doc.Load(menuFile); // 加载XML文件
// 读取子节点
XmlNodeList nodes = doc.DocumentElement.ChildNodes;
if (nodes != null)
{
foreach (XmlNode node in nodes)
{
// 读取菜单节点
string menuId = node.Attributes["id"].Value.ToString(); // 菜单ID
string menuClass = node.Attributes["class"].Value.ToString(); // 菜单样式
string menuName = node.Attributes["name"].Value.ToString(); // 菜单名称
// 菜单栏目
XmlNodeList childNodes = node.ChildNodes;
// 遍历节点
sb.Append(this.createMenuInfo(menuId, menuClass, childNodes));
sbJs.Append(@"
var " + menuId + @" = new Ext.Panel({
frame: true,
title: '" + menuName + @"',
collapsible: true,
contentEl: '" + menuId + @"',
titleCollapse: true
});
");
str += menuId + ",";
}
str = str.Substring(0, str.Length - 1);
sbJs.Append(@"
//添加左边
var west = new Ext.Panel({
id: 'action-panel',
region: 'west',
split: true,
collapsible: true,
collapseMode: 'mini',
header: false,
width: 200,
minWidth: 200,
maxWidth: 200,
border: false,
baseCls: 'x-plain',
items: [" + str + @"]
});
");
}
// 此处于用动态加载一个JS到页面中
HtmlGenericControl script = new HtmlGenericControl("script");
script.Attributes.Add("language", "JavaScript");
script.Attributes.Add("type", "text/javascript");
script.InnerHtml = sbJs.ToString(); // 加载要使用的JS菜单
this.Page.Header.Controls.Add(script);
return sb;
}
这样就实现了动态创建过程,重点就是对于XML文件的读取和XML文件规则的制定。
上面文件方法中的:System.Web.Configuration.WebConfigurationManager.AppSettings["menufilepath"]此处将文件路径保存在WebConfig.xml文件里。
当然写了这么多东西都是为了在页面展示,页面中要给代码留下来相应的位置,以便加载使用:
<%--初始化左侧菜单--%>
<div id="leftMenu" runat="server">
</div>
这样后台只需要调用上面的方法来完成内容的加载:
this.leftMenu.InnerHtml = this.initMenu().ToString();
这样就完成了通过XML文件来动态加载Extjs左侧菜单功能。
个人博客:
www.52cfml.com
分享到:
相关推荐
在“Extjs动态加载菜单”这个主题中,我们将深入探讨这一功能的实现方式以及相关技术。 首先,动态加载菜单的概念是指菜单项不是在页面加载时一次性全部显示,而是根据用户的操作或特定条件按需加载。这种设计提高...
通过以上步骤,我们便能在 ExtJS 中实现动态树加载菜单。这种技术不仅优化了用户体验,还提高了应用程序的性能。在实际项目中,你可以根据需求调整配置,例如添加分页、错误处理等功能,以满足更复杂的应用场景。
标题“Extjs 动态加载树”涉及到的是一个前端开发技术话题,主要集中在使用Extjs框架构建能够动态加载数据的树形结构。Extjs是一个基于JavaScript的组件化UI库,常用于开发富客户端应用。动态加载树(Dynamic ...
标题中的“ExtJS Desktop相关 动态生成开始菜单 多级菜单的快捷方式”涉及到的是一个使用ExtJS框架实现的桌面应用模拟系统,它能够创建类似Windows操作系统的开始菜单,并支持多级菜单结构来快速访问应用程序或功能...
在本示例中,我们将深入探讨如何使用ExtJS实现动态加载grid,同时实现CRUD(创建、读取、更新、删除)操作和分页功能。 首先,让我们了解什么是Grid。在ExtJS中,Grid是一种数据网格组件,用于展示大量结构化数据。...
本文将深入探讨如何使用ExtJS构建动态异步加载的树形结构,结合AJAX技术实现JSON数据的高效传输。 首先,我们要理解什么是动态异步加载。在传统的网页开发中,如果一次性加载所有数据,可能会导致页面加载速度慢,...
在ExtJS中,这种功能主要通过`Ext.tree.TreePanel`或其现代版本`Ext.tree.View`来实现。 一、ExtJS 动态树基础 1. `Ext.tree.TreePanel`:这是ExtJS中用于创建树形结构的主要组件。它具有丰富的配置项和事件,支持...
extjs4.0 实现了主页面框架(主框架使用Ext.Viewport,banner使用Ext.panel.Panel,通过toolbar来放置按钮),包括左侧动态菜单实现(采用Ext.tree.Panel)动态从数据库加载数据来显示菜单(后台代码也在了通过json...
在ExtJS 4.2中实现左菜单的动态加载功能是一项常见的需求,特别是对于大型应用,它能够根据用户的需求按需加载菜单项,从而减少初次加载时的数据量和提升用户体验。 **MVC模式** 1. **Model**:模型层,负责处理...
这个压缩包文件的内容看起来是一个完整的EXTJS项目,包含了数据库交互、动态树结构和菜单功能,并且集成了SpringMVC后端框架以及JDBC数据访问层。 1. **EXTJS动态树**: EXTJS的动态树(TreePanel)组件允许开发者...
Extjs 下拉菜单实现拼音输入进行检索
通过ExtJS的动态加载机制,开发者可以定义哪些类是在需要时才加载的。例如,当用户访问特定功能时,系统才会加载相应的控制器、模型、视图等。这可以通过`Ext.Loader`对象的配置和使用`requires`或`uses`关键字来...
通过阅读和分析提供的文件内容,我们可以更深入地学习这两种不同的动态表头实现方式,比较它们的优缺点,并从中吸取经验。这不仅可以提升个人的ExtJS技能,也有助于在实际项目中实现更高效、更灵活的数据展示。在...
- ExtJS 应用通常使用AJAX(异步JavaScript和XML)技术与C#后端进行通信,实现页面无刷新的数据交换。这可以通过Ext.Ajax或者Ext.data.Proxy(如RESTful Proxy)实现。 4. **JSON 数据格式**: - C#后端返回的...
extJS4 MVC demo项目入门涉及的是前端开发领域的技术要点,主要介绍了extJS4框架中的MVC(Model-View-Controller)模式在实际开发项目中的应用方法,并着重讲述了如何实现前端资源的按需加载和动态加载。在了解这些...
【标题】:“Extjs结合fckeditor+c#实现新闻发布”是一个基于Web的应用开发示例,它展示了如何使用Extjs作为前端框架,与富文本编辑器fckeditor集成,并利用C#后端语言来处理新闻发布功能。这一组合可以创建一个交互...
在ExtJS Tree中实现动态加载,主要涉及以下几个关键概念: 1. **TreeStore**: TreeStore是ExtJS Tree的数据源,负责管理树节点的数据。它可以配置为从服务器异步获取数据,通过`proxy`配置项来指定数据源类型,通常...
Extjs4开发笔记(三)——菜单的实现 Extjs4开发笔记(二)——框架的搭建 Extjs4开发笔记(五)——动态grid Extjs4开发笔记(四)——实现登录功能 Extjs4开发笔记(一)——准备工作 关于Extjs4开发笔记(二)的补充说明 ...
extjs4.0中,不想一次性加载所有...extjs4.0好像设计上是一个应用对应一个application,所以原先想通过动态加载多个application来实现上面的需求。但是那样会有其问题出现,即使解决,好像也不是很好,所以改用这种方式
c#版本Extjs4.1版本的开发,采用Ajax的方式实现Extjs的功能