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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/// <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),及时了解最新动态。

       扫描二维码立即关注

posted @   .NET快速开发框架  阅读(710)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示