RDIFramework.NET V2.7 Web版本升手风琴+树型目录(2级+)方法

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/26374473 RDIFramework.
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/26374473

RDIFramework.NET V2.7 Web版本升手风琴+树型目录(2级+)方法

 

  手风琴风格在Web应用非常的普遍,越来越多的Web应用都是采用这种方式来体现各个功能模块,传统的手风琴风格只支持两级模块,当我们的功能模块多于两级时,我们一般采用树来构造功能菜单(我们的框架也提供了这种方式),但这种方式没有手风琴效果美观,因此我们采用了手风琴+树的形式来构造“手风琴+树型目录(2+)”界面风格,以展示多级功能菜单,满足用户的要求。Web展示效果如下:

  

  要以“手风琴+树型目录(2+)”的风格来展示功能模块,我们需要在“系统配置”的“个性化”设置中进行个性化设置,这儿的设置可针对不同人的爱好进行各自的设置。如下图所示:

  

  具体实现方式为以下几个步骤:

 一、设置SysConfig.js,增加一个展示方式,如下图所示: 

 

 二、在newlayout.js中增加一个展现形式的判断,单独判断我们新增的“AccordionTree”展示样式,如下图所示:

  

  其中的AccordionTree.init();代码如下:        

//手风琴 + tree
var AccordionTree = {
    init: function () {
        $.each(_menus, function (i, n) {
            var cssIcon = 'icon icon-application_osx'; //没有设置图标,则取一个默认图标
            if (n.iconCls) {
                cssIcon = n.iconCls;
            }
            $('#wnav').append('<div style="padding:0px;" title="' + n.text
                             + '" data-options="border:false,iconCls:\''
                             + cssIcon
                             + '\'"><ul id="nt'
                             + i
                             + '"></ul></div>');
        });
        $("#wnav").accordion({
            fit: true,
            border: false,
            onSelect: function (t, i) {
                $('#nt' + i).tree({
                    lines: false,
                    animate: true,
                    data: _menus[i].children,
                    onClick: function (node) {
                        if (node.attributes.url != "" && node.attributes.url != '#') {
                            addTab(node.text, node.attributes.url + '?navid=' + node.id, node.iconCls);
                        } else {
                            $('#nt' + index).tree('toggle', node.target);
                        }
                    }
                });
            }
        });
    }
};

 三、修改Default.aspx.cs代码,如下图所示:  

  其中的:GetAccordionTreeJsonByTable代码如下:        

       /// <summary>
        /// 根据DataTable生成AccordionTree Json树结构
        /// </summary>
        /// <param name="tabel">数据源</param>
        /// <param name="idCol">ID列</param>
        /// <param name="txtCol">Text列</param>
        /// <param name="rela">关系字段</param>
        /// <param name="pId">父ID</param>
        /// <returns>返回json数据</returns>
        private string GetAccordionTreeJsonByTable(DataTable tabel, string idCol, string txtCol, string rela, object pId)
        {
            result += tmpStr;
            tmpStr = string.Empty;

            if (tabel.Rows.Count <= 0) return result;
            tmpStr += "[";
            var filer = string.Format("{0}='{1}'", rela, pId);
            var rows = tabel.Select(filer);
            if (rows.Length > 0)
            {
                foreach (var row in from row in rows
                                    let moduleType = BusinessLogic.ConvertToInt(row[PiModuleTable.FieldModuleType])
                                    where moduleType == null || moduleType == 2 || moduleType == 3
                                    select row)
                {
                    tmpStr += "{\"id\":\"" + row[idCol] + "\",\"text\":\"" + row[txtCol]
                              + "\",\"iconCls\":\"" +                              BusinessLogic.ConvertToString(row[PiModuleTable.FieldIconCss]).Replace("icon ", "")
                              + "\",\"attributes\":{"
                              + "\"url\":\"" + row[PiModuleTable.FieldNavigateUrl]
                              + "\",\"FullName\":\"" + row[PiModuleTable.FieldFullName]
                              + "\"}";
                    if (tabel.Select(string.Format("{0}='{1}'", rela, row[idCol])).Length > 0)
                    {
                        tmpStr += RDIFramework.WebCommon.PublicMethod.GetInt(row[PiModuleTable.FieldExpand]) == 1
                            ? ",\"state\":\"open\""
                            : ",\"state\":\"closed\"";
                        tmpStr += ",\"children\":";
                        GetAccordionTreeJsonByTable(tabel, idCol, txtCol, rela, row[idCol]);
                        result += tmpStr;
                        tmpStr = string.Empty;
                    }
                    result += tmpStr;
                    tmpStr = string.Empty;
                    tmpStr += "},";
                }
                tmpStr = tmpStr.Remove(tmpStr.Length - 1, 1);
            } 

            tmpStr += "]";
            result += tmpStr;
            tmpStr = string.Empty;
            return result;

        }


  至此,我们“手风琴+树型目录(2+)”界面风格整理开发完成。

  附注:Default.aspx.cs代码中,我们最初的代码已经有一个名为“GetAccordionTreeJsonByTable”的方法,请将其改名为“GetAccordionJsonByTable”,相应的调用它的地方也要同步修改下即可。


作者: EricHu 
出处:http://blog.csdn.net/chinahuyong  
Email:406590790@qq.com 
QQ交流:406590790 
QQ群:237326100 
框架博客:http://blog.csdn.net/chinahuyong 
               http://www.cnblogs.com/huyong
RDIFramework.NET,基于.NET的快速信息化系统开发、整合框架,给用户和开发者最佳的.Net框架部署方案。 
关于作者:高级工程师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,在面向对象、面向服务以及数据库领域有一定的造诣。现主要从事基于 RDIFramework.NET 框架的技术开发、咨询工作,主要服务于金融、医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。 
如有问题或建议,请多多赐教! 
本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。

相关文章
|
2月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
695 2
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
8月前
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
410 35
|
8月前
|
移动开发 前端开发 JavaScript
H5 页面与 Web 页面的制作方法
H5页面制作利用HTML5、CSS3和JavaScript技术,结合H5编辑器或框架(如Adobe Dreamweaver、Ionic),注重移动设备兼容性与响应式布局。Web页面制作则基于传统HTML、CSS和JavaScript,借助文本编辑器或IDE完成开发。两者区别在于技术版本、交互性和浏览器支持:H5更互动、现代,但可能不兼容旧浏览器;Web页面更静态、兼容性广。根据需求选择:高交互选H5,广泛兼容选Web。
1199 6
|
10月前
|
存储 JSON JavaScript
WEB CAD插件通过上下文对象MxPluginContext修改UI界面的方法
本文介绍了如何使用MxPluginContext动态控制MxCAD项目的UI界面。通过该上下文对象,开发者可以灵活设置UI配置,如控制操作栏显隐、编辑按钮、添加侧边栏等。具体方法包括调用`getUiConfig()`获取并修改`mxUiConfig.json`中的属性,实现界面的定制化。此外,还提供了控制命令行聚焦的功能,解决输入框焦点锁定问题。详细代码示例和效果对比图展示了具体实现步骤,帮助开发者更好地适配项目需求。
|
12月前
|
运维 前端开发 C#
一套以用户体验出发的.NET8 Web开源框架
一套以用户体验出发的.NET8 Web开源框架
327 7
一套以用户体验出发的.NET8 Web开源框架
|
SQL 存储 安全
Web 常见攻击方式及防御方法
【10月更文挑战第25天】Web 安全是一个复杂而重要的领域,攻击者不断寻找新的攻击方法,我们需要不断加强防御措施,提高安全意识,以保障 Web 应用的安全运行。通过采取多种防御手段的综合运用,我们可以有效地降低 Web 攻击的风险,保护用户的信息和财产安全。同时,随着技术的不断发展,我们也需要持续关注和研究新的安全威胁和防御方法,以应对不断变化的安全形势。
1539 56
|
11月前
|
开发框架 数据可视化 .NET
.NET 中管理 Web API 文档的两种方式
.NET 中管理 Web API 文档的两种方式
228 14
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
582 3