ASP.NET中TREEVIEW的學習經驗

來源:互聯網
上載者:User

1.產生一個TREEVIEW,節點一次性全部載入

 

 

 

/// <summary>
    /// 初始化欄目樹
    /// </summary>
    private void initTree()
    {
        //得到根欄目

        Channel rootChannel = CmsHttpContext.Current.RootChannel;
        int dc = rootChannel.Channels.Count;
        //清空原有的分類樹
        ChannelView.Nodes.Clear();

   TreeNode rootNode = new TreeNode();
        rootNode.Text = "欄目樹";
        rootNode.Value = rootChannel.Guid;
        //rootNode.NavigateUrl = "~/Module/ChannelInfoManage/ChannelManage.aspx?Guid=" + rootChannel.Guid;
        rootNode.Target = "ChannelManage";

    //調用函數 用於產生子節點
        CreateTree(rootChannel, rootNode);

      //ChannelView為在ASPX裡聲明的一個TREEVIEW對象
        ChannelView.Nodes.Add(rootNode);
        ChannelView.ExpandDepth = 1;

    }

/// <summary>
    /// 建立欄目樹
    /// </summary>
    /// <param name="rootChannel">根欄目</param>
    /// <param name="rootNode">根節點</param>
    public void CreateTree(Channel rootChannel, TreeNode rootNode)
    {
        if (rootChannel.Channels.Count > 0 && rootChannel.Channels != null)
        {
            foreach (Channel subChannel in rootChannel.Channels)
            {
                TreeNode subNode = new TreeNode();
                //TREEVIEW節點中節點的顯示名稱
                subNode.Text = subChannel.Name;
                //設定節點的值
                subNode.Value = subChannel.Guid;
                //subNode.NavigateUrl = "~/Module/ChannelInfoManage/ChannelManage.aspx?Guid=" + subChannel.Guid;
                subNode.Target = "ChannelManage";
                //在節點前面是否顯示複選框
                subNode.ShowCheckBox = true;
                //擷取一個值,表示複選框是否被選中
                subNode.Checked = subChannel.IsHiddenModePublished;
                //根節點加入子節點
                rootNode.ChildNodes.Add(subNode);
                //遞迴調用,產生子節點
                CreateTree(subChannel, subNode);

            }
        }
    }

 

二:TREEVIEW的動態載入產生,點擊某個節點,其下的節點動態產生。

 protected void Page_Load(object sender, EventArgs e)
    {
       
        if (!Page.IsPostBack)
        {
         
            //設定提交按鈕確認屬性
            submitButtonInit(submitButton);
            //初始化欄目樹
            Channel rootChannel = context.RootChannel;
            TreeNode rootNode = new TreeNode();
            rootNode.Text = rootChannel.Name;
            rootNode.Value = rootChannel.Guid;
         
           //設定動態填充節點
            rootNode.PopulateOnDemand = true;
            //設定節點為摺疊
            rootNode.Expanded = false;
            //TREEVIEW加入了根節點
            ChannelView.Nodes.Add(rootNode);
        }

    }

 /// <summary>
    /// 初始化確定按鈕,在用戶端確認某欄目是否被隱藏
    /// </summary>
    private void submitButtonInit(Button submitButton)
    {
        submitButton.Attributes.Add("onClick", "return confirm('請確認是否改變當前所選子欄目的隱藏狀態?')");
    }

//實現動態填充TREEVIEW的函數
    protected void ChannelView_TreeNodePopulate(object sender, TreeNodeEventArgs e)
    {
        Channel curChannel = null;
        ChannelCollection channelCol = null;
        curChannel = context.Searches.GetByGuid(e.Node.Value) as Channel;
        channelCol = curChannel.Channels;
        if (channelCol != null && channelCol.Count > 0)
        {
            foreach (Channel subChannel in channelCol)
            {
                TreeNode node = new TreeNode();
                node.Text = subChannel.Name;
                node.Value = subChannel.Guid;
                node.ShowCheckBox = true;
                node.Checked = channelOperater.IsChannelHided(subChannel);
                node.PopulateOnDemand = true;
                node.Expanded = false;
               e.Node.ChildNodes.Add(node);
            }
        }
    }

三:捕獲TREEVIEW節點前的複選框是否被選中或取消。

    TREEVIEW ChannelView=new TREEVIEW();

    ChannelView.CheckedNodes

  treeview的CheckedNodes屬性代表了被節點前的複選框選中了的節點集合TREENODECOLLECTION

 

至於那些取消了本來打鉤的複選框的節點集合

 TreeNodeCollection  tc = new TreeNodeCollection();

有以下產生:

 int i = 0;
    protected void ChannelView_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
    {
     
        if (e.Node.Checked == false)
            tc.Add(e.Node);
  
    }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.