RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->Web版本模块管理界面新增模块排序功能

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/75913764 模块(菜单)的排序是每个系统都必须要有的功能,我们框架模块的排序在业务逻辑中已经体现。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/75913764


模块(菜单)的排序是每个系统都必须要有的功能,我们框架模块的排序在业务逻辑中已经体现。

WinForm版本可以直接在界面上对模块进行排序以控制模块展示的顺序。Web版本在3.2版本中也新增了直接可以模块管理界面对模块进行排序的人性化操作,大大的方便了管理人员。模块的排序在模块管理主界面分页按钮的右侧如下图所示。


三个按钮功能分别为:上移、下移、确认修改

        WebMVC部分,模块排序功能代码参考:

	/// <summary>
        /// 保存模块排序功能
        /// </summary>
        /// <param name="parentId">父节点</param>
        /// <param name="rows">数据行</param>
        /// <returns></returns>
        [HttpPost]
        [ValidateInput(false)]
        [LoginAuthorize]
        public virtual ActionResult SaveSort(string parentId,string rows)
        {
            string message = RDIFrameworkMessage.MSG0001;
            try
            {
                if (!IsAuthorized("ModuleManagement.Edit"))
                {
                    return Content(new JsonMessage { Success = false, Data = "0", Message = "你没有权限操作!" }.ToString());
                }
                
                int returnUpdateValue = 0;
                RDIFramework.Utilities.UserInfo curUser = ManageProvider.Provider.Current();
                if (!string.IsNullOrEmpty(parentId))
                {
                    var dtModule = RDIFrameworkService.Instance.ModuleService.GetDTByParent(curUser, parentId);
                    var moduleOldSort = new List<KeyValuePair<string, object>>();
                    if (dtModule != null && dtModule.Rows.Count > 0)
                    {
                        moduleOldSort.AddRange(from DataRow row in dtModule.Rows select BaseEntity.Create<PiModuleEntity>(row) into moduleEntity select new KeyValuePair<string, object>(moduleEntity.Id, moduleEntity.SortCode));
                    }

                    var moduleNewSort = new List<KeyValuePair<string, object>>();
                    //把json字符串转换成对象
                    List<PiModuleEntity> listRows = rows?.JonsToList<PiModuleEntity>();
                    if (listRows != null && listRows.Count > 0)
                    {
                        moduleNewSort.AddRange(listRows.Select(entity => new KeyValuePair<string, object>(entity.Id, entity.SortCode)));
                    }

                    if (moduleNewSort.Count > 0 && moduleOldSort.Count > 0 && moduleNewSort.Count == moduleOldSort.Count)
                    {
                        for (int index = 0; index < moduleOldSort.Count; index++)
                        {
                            moduleOldSort[index] = moduleNewSort[index];
                        }

                        foreach (var parElement in moduleOldSort)
                        {
                            PiModuleEntity updateEntity = RDIFrameworkService.Instance.ModuleService.GetEntity(curUser,parElement.Key);
                            if (updateEntity.SortCode != null && parElement.Value != null && !updateEntity.SortCode.Equals(BusinessLogic.ConvertToInt32(parElement.Value)))
                            {
                                updateEntity.SortCode = BusinessLogic.ConvertToInt32(parElement.Value);
                                string statusCode;
                                string statusMessage;
                                RDIFrameworkService.Instance.ModuleService.Update(curUser, updateEntity, out statusCode,out statusMessage);
                                returnUpdateValue += statusCode == RDIFramework.Utilities.StatusCode.OKUpdate.ToString()? 1: 0;
                            }
                        }

                        if (returnUpdateValue > 0)
                        {
                            message = "操作提示:" + " <br>排序保存成功,更新数据:" + returnUpdateValue.ToString() + "条。";
                            return Content(new JsonMessage {Success = true, Data = "1", Message = message}.ToString());
                        }
                        message = "操作提示:" + " <br>没有排序数据被修改。";
                        return Content(new JsonMessage { Success = true, Data = "1", Message = message }.ToString());
                    }

                    message = "操作提示:" + " <br>当前操作的记录条件与原记录条件不符。";
                    return Content(new JsonMessage { Success = false, Data = "0", Message = message }.ToString());
                }
                message = "操作提示:" + " <br>请选择一个父级节点再操作。";
                return Content(new JsonMessage { Success = false, Data = "0", Message = message }.ToString());
            }
            catch (Exception ex)
            {
                return Content(new JsonMessage { Success = false, Data = "0", Message = "操作失败:" + ex.Message }.ToString());
            }
        }

  相关文章:    

     RDIFramework 平台代码生成器V3.2 发布版 

   RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录  

   RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍 

  一路走来数个年头,感谢RDIFramework.NET框架的支持者与使用者,大家可以通过下面的地址了解详情。 

      RDIFramework.net官方网站:http://www.rdiframework.net/ 

      RDIFramework.Net官方博客:http://blog.rdiframework.net/ 

      同时需要说明的,以后的所有技术文章以官方网站为准,欢迎大家收藏! 

      RDIFramework.NET框架由专业团队长期打造、一直在更新、一直在升级,请放心使用!  

  欢迎关注RDIFramework.NET框架官方公众微信(微信号:guosisoft),及时了解最新动态。

   扫描二维码立即关注

 


相关文章
|
8月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
625 4
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
前端开发 JavaScript Shell
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
本文为鸿蒙开发者整理了Web性能优化的实战案例解析,结合官方文档深度扩展。内容涵盖点击响应时延核心指标(≤100ms)、性能分析工具链(如DevTools时间线、ArkUI Trace抓取)以及高频优化场景,包括递归函数优化、网络请求阻塞解决方案和setTimeout滥用问题等。同时提供进阶技巧,如首帧加速、透明动画陷阱规避及Web组件初始化加速,并通过优化前后Trace对比展示成果。最后总结了快速定位问题的方法与开发建议,助力开发者提升Web应用性能。
|
JSON 开发框架 自然语言处理
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
本文主要介绍了应用开发中的三大核心内容:生命周期管理、资源限定与访问以及多语言支持。在生命周期部分,详细说明了应用和页面的生命周期函数及其触发时机,帮助开发者更好地掌控应用状态变化。资源限定与访问章节,则聚焦于资源限定词的定义、命名规则及匹配逻辑,并阐述了如何通过 `$r` 引用 JS 模块内的资源。最后,多语言支持部分讲解了如何通过 JSON 文件定义多语言资源,使用 `$t` 和 `$tc` 方法实现简单格式化与单复数格式化,为全球化应用提供便利。
381 104
|
JavaScript 前端开发 API
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
本文介绍了HarmonyOS应用开发中的HML、CSS和JS语法。HML作为标记语言,支持数据绑定、事件处理、列表渲染等功能;CSS用于样式定义,涵盖尺寸单位、样式导入、选择器及伪类等特性;JS实现业务逻辑,包括ES6语法支持、对象属性、数据方法及事件处理。通过具体代码示例,详细解析了页面构建与交互的实现方式,为开发者提供全面的技术指导。
424 104
|
开发框架 编解码 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(一)
该文档详细介绍了一个兼容JS的类Web开发范式的方舟开发框架,涵盖概述、文件组织、js标签配置及app.js等内容。框架采用HML、CSS、JavaScript三段式开发方式,支持单向数据绑定,适合中小型应用开发。文件组织部分说明了目录结构、访问规则和媒体文件格式;js标签配置包括实例名称、页面路由和窗口样式信息;app.js则描述了应用生命周期与对象管理。整体内容旨在帮助开发者快速构建基于方舟框架的应用程序。
442 102
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
3159 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
机器学习/深度学习 存储 编解码
RT-DETR改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
RT-DETR改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
529 16
RT-DETR改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)