ASP.NET treeview 节点上下移动

///   <summary>
    
///  上移
    
///   </summary>
     protected   void  btnUp_Click( object  sender, EventArgs e)
    {
        
if  (treeChapters.SelectedNode  !=   null )
        {
            TreeNode sourceNode 
=  treeChapters.SelectedNode;
            
int  intIndex  =  treeChapters.Nodes.IndexOf(treeChapters.SelectedNode);
            
if  (intIndex  >   0 )
            {
                treeChapters.Nodes.AddAt(intIndex 
-   1 , sourceNode);
            }
            
else   if  (intIndex  !=   0 )
            {
                TreeNode tnParent 
=  treeChapters.SelectedNode.Parent;
                
int  index  =  tnParent.ChildNodes.IndexOf(treeChapters.SelectedNode);
                
foreach  (TreeNode tnNode  in  tnParent.ChildNodes)
                {
                    
if  (treeChapters.SelectedNode.Value  ==  tnNode.Value  &&  index  !=   0 )
                    {
                        TreeNode tnTemp 
=   new  TreeNode();
                        tnTemp 
=  tnNode;
                        tnParent.ChildNodes.Remove(treeChapters.SelectedNode);
                        tnParent.ChildNodes.AddAt(index 
-   1 , tnTemp);
                        
// 设置移动后要选择的节点
                        tnParent.ChildNodes[index  -   1 ].Select();

                        
// 更新要往上移动的章节:ChapterId = treeChapters.SelectedNode.Value 的顺序为:index - 1
                        UpdateChapterOrderNo(CourseId, Convert.ToInt32(treeChapters.SelectedNode.Value), index  -   1 );
                        
// 更新往下移动的章节:tnParent.ChildNodes[index].value 的顺序为:index
                        UpdateChapterOrderNo(CourseId, Convert.ToInt32(tnParent.ChildNodes[index].Value), index);
                        
break ;
                    }
                }
            }
        }
    }

    
///   <summary>
    
///  下移
    
///   </summary>
     protected   void  btnDown_Click( object  sender, EventArgs e)
    {
        
if  (treeChapters.SelectedNode  !=   null )
        {
            TreeNode sourceNode 
=  treeChapters.SelectedNode;
            
int  intCount  =  treeChapters.Nodes.Count;

            
if  (treeChapters.Nodes.IndexOf(treeChapters.SelectedNode)  <  intCount  -   1   &&  treeChapters.Nodes.IndexOf(treeChapters.SelectedNode)  >=   0 )
            {
                
int  intIndex  =  treeChapters.Nodes.IndexOf(treeChapters.SelectedNode)  +   1 ;
                treeChapters.Nodes.AddAt(intIndex, sourceNode);
            }
            
else   if  (treeChapters.Nodes.IndexOf(treeChapters.SelectedNode)  !=  intCount  &&  treeChapters.Nodes.IndexOf(treeChapters.SelectedNode)  <   0 )
            {
                TreeNode tnParent 
=  treeChapters.SelectedNode.Parent;
                
int  nodeCount  =  tnParent.ChildNodes.Count;
                TreeNode tnSelectedNode 
=   new  TreeNode();
                
bool  count  =   false ;
                
int  index  =  tnParent.ChildNodes.IndexOf(treeChapters.SelectedNode);
                
foreach  (TreeNode tnNode  in  tnParent.ChildNodes)
                {
                    
if  (treeChapters.SelectedNode.Value  ==  tnNode.Value)
                    {
                        count 
=   true ;
                        tnSelectedNode 
=  tnNode;
                    }
                    
                    
if  (treeChapters.SelectedNode.Value  !=  tnNode.Value  &&  count  ==   true )
                    {
                        tnParent.ChildNodes.Remove(treeChapters.SelectedNode);
                        tnParent.ChildNodes.AddAt(index 
+   1 , tnSelectedNode);
                        
// 设置移动后要选择的节点
                         if  (index  +   1   >=  nodeCount)
                        {
                            tnParent.ChildNodes[nodeCount 
-   1 ].Select();
                        }
                        
else
                        {
                            tnParent.ChildNodes[index 
+   1 ].Select();
                        }
                        
// TODO:更新当前要移动的章节:ChapterId = treeChapters.SelectedNode.Value 的顺序为:index + 1
                        UpdateChapterOrderNo(CourseId, Convert.ToInt32(treeChapters.SelectedNode.Value), index  +   1 );
                        
//  更新从下往上移动的章节:tnParent.ChildNodes[index+1].value 的顺序为:index
                        UpdateChapterOrderNo(CourseId, Convert.ToInt32(tnParent.ChildNodes[index].Value), index );
                        
break ;
                    }
                }
                
            }
        }
    }

    
///   <summary>
    
///  更新章节排序
    
///   </summary>
    
///   <param name="courseID"> 课程ID </param>
    
///   <param name="chapterId"> 章节ID </param>
    
///   <param name="orderNo"> 顺序 </param>
     private   void  UpdateChapterOrderNo( int  courseID,  int  chapterId,  int  orderNo)
    {
        oU_Chapter.ChapterId 
=  chapterId;
        oU_Chapter.CourseID 
=  courseID;
        oU_Chapter.OrderNo 
=  orderNo;
        oU_ChapterLogic.UpdateChapterOrderNo(oU_Chapter);
    }

 


 
   另附广告:女朋友的淘宝网店,为她做宣传,希望大家别介意, http://iyseek.taobao.com  欢迎大家逛逛,嘿嘿!

   欢迎大家一起交流,如有疑问,请联系zheng331773812@hotmail.com !

 

转载于:https://www.cnblogs.com/jsonzheng/archive/2011/03/03/1969663.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值