首页 > 其他分享 >树形菜单节点上下移动(同级别)

树形菜单节点上下移动(同级别)

时间:2024-08-22 08:53:37浏览次数:12  
标签:Sort sort 菜单 list id public 树形 节点

 

在软件开发过程中,有遇到过树形菜单节点排序问题,如节点上移、节点下移。

以下是一种实现方式,请工程师们审查是否合理!

 

 

 

树形菜单

 

 

public class NodeInfoEntity 
{
    /// <summary>
    ///     id
    /// </summary>
    [Column(Name = "id")]
    public string Id{ get; set; }

    /// <summary>
    ///     排序号
    /// </summary>
    [Column(Name = "sort")]
    public int Sort { get; set; } 

    /// <summary>
    ///     父级ID
    /// </summary>
    [Column(Name = "pid")]
    public string Pid { get; set; } 
}

 

  

 var model=new NodeInfoEntity();
 mode.Id="1";
 model.Sort=2;

 var list = _fsql.Select<NodeInfoEntity>()
  .Where(x => x.Pid.Equals(model.Pid)).OrderBy(x => x.Sort).ToList();

 // 查看是上移还是下移
 var isUp = model.Sort > sort ? true : false;
 for (int i = 0; i < list.Count; i++)
 {
     // 如果不是移动的节点
     if (!list[i].Id.Equals(id))
     {
         // 如果节点顺序大于sort,这个节点顺序+1,往后排
         if (list[i].Sort > sort)
         {
             list[i].Sort += 1;
         }
         else if (list[i].Sort == sort)
         {
             // 如果是上移
             if (isUp)
             {
                 list[i].Sort += 1;
             }
             // 如果是下移
             else
             {
                 list[i].Sort -= 1;
             }
         }
         // 如果节点顺序小于sort,这个节点等于i,往前排
         else
         {
             list[i].Sort = i;
         }
     }
     // 如果是移动的节点
     else if (list[i].Id.Equals(id))
     {
         list[i].Sort = sort;
     }
 }

 // 重新排序 
 list = list.OrderBy(x => x.Sort).ToList();
 for (int i = 0; i < list.Count; i++)
 {
     list[i].Sort = i;
     list[i].UpdateTime = DateTime.Now;
 }

 _fsql.Update<NodeInfoEntity>()
     .SetSource(list)
     .UpdateColumns(a => new { a.Sort})
     .ExecuteAffrows();

 

标签:Sort,sort,菜单,list,id,public,树形,节点
From: https://www.cnblogs.com/heimalang/p/18372951

相关文章

  • delphi webbrowser屏蔽右键菜单 防止右键 防止ctrl N
    本文介绍了如何在Delphi中通过事件处理和消息过滤,阻止WebBrowser控件中的右键菜单以及防止用户使用Ctrl+N快捷键。通过`ProcessMsg`和`ApplicationEvents1Message`等方法实现对浏览器行为的控制。{关键字=webbrowser屏蔽右键菜单防止右键防止ctrlN采集软件=MKM-我的知识管理......
  • ant design vue 表格table 和复选框Checkbox结合 实现树形数据操作
    前言:最近在做一个权限管理的页面,需要配置权限。业务给的要求在表格里,展示权限以及编辑权限。然后根据权限数组,动态展示模块。页面需求:可以设定每个公司或者部门的单独权限,可以编辑保存权限主要实现:1.全选,反选(递归循环,every,some实现)2.子级选中其父级选中,父级取消子级也取消3.......
  • AVL树、2-3-4树、红黑树节点增加删除原理(详细说明)
    AVL树与红黑树引入:BST(二叉查找树)在插入的时候会导致倾斜,不同的插入顺序会导致树的高度不一样,树的高度直接影响到树的查找效率,最坏的情况就是所有节点就在一条斜线上,导致树的高度为N。平衡二叉树(BalancedBST)在插入和删除的时候,会通过旋转将高度保持在Logn。删除节点:   ......
  • 电力系统潮流计算(牛顿-拉夫逊法、高斯-赛德尔法、快速解耦法)【6节点 9节点 14节点 26
      ......
  • 零壹塔(力扣,递归,找父节点)
    https://leetcode.cn/problems/k-th-symbol-in-grammar/0/\01/\/0110/\/\/\/\01101001#include<iostream>usingnamespacestd;intsolve(i......
  • 树形 dp 做题笔记
    在这个随笔中,会有笔者的一些做题笔记,包括但不限于树形dp的思想、解题技巧、代码实现等。CF1926GVladandTroubleatMIT\(\texttt{*1900}\)。TAG:\(\texttt{树形dp}\)\(dp_{i,S,P}\)为\(i\)的子树内是否存在S和P的状态。转移方程为:当\(s_i\)为C时dp[x]......
  • 基于STM32(STM32F103RETX)项目:水质检测与水位控制器(节点板)
    目录项目介绍一、项目需求二、设计方案三、相关技术点四、预计效果设备开发一、TDS模块二、LORA模块项目介绍一、项目需求1.水资源保护与管理的需求随着工业化和城市化的快速发展,水资源的污染问题日益严重,对水质进行实时监测和管理变得尤为重要。水质检测与水......
  • 左侧菜单栏实现
    效果图代码<template><divclass="app"><spanclass="menu-btn">菜单列表</span><divclass="menu-container"><divclass="menu-list"><!--<divclass="me......
  • RabbitMQ消息队列:概念、单节点和集群示例
    目录消息队列概念主流的消息队列消息队列名词(1)Broker(2)Topic(3)Producer(4)Consumer(5)Queue(6)Message消息队列中两种工作模式Point-to-Point(PTP、点到点)Pub/Sub消息队列的缺点系统可用性降低系统复杂性提高数据一致性无法保证RabbitMQ相关术语(1)生产者(2)消费者(3)队......
  • 树形 dp
    在树上运行的dp叫做树形dp。题单。树形dp入门问题例1.1:没有上司的舞会我们发现,对于一个节点,要么选或不选,且题目中要求求出权值最大的方案,不妨分别设\(dp_{i,0},dp_{i,1}\)为在以\(i\)为根的子树中,第\(i\)个点选或不选情况下的最大权值。那么可以得到\[dp_{i,0}=......