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  歡迎大家逛逛,嘿嘿!

如有需要幫助,請聯繫MSN:[email protected](上班時在線)   QQ:331773812

歡迎大家共同交流!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章