欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TreeView控件使用总结

程序员文章站 2022-06-08 10:19:12
...

刚开始接触TreeView控件的时候,感觉很苦恼,因为要像下面的方式来填充它:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class ascx_ReleaseMenuManage : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Dispaly();
            GetParentNodes();
           
        }
    }
    private void Dispaly()
    {
        IList<Node> parents = GetData("0");
        foreach (Node parent in parents)
        {
            TreeNode parentnode = this.CreateTreeNode(parent.Name, parent.ID, parent.Url);
            CreateChildNode(parent.ID, parentnode);
            TreeView1.Nodes.Add(parentnode);
        }
       
    }
    private TreeNode CreateTreeNode(string funname, string id, string url)
    {
        TreeNode newNode = new TreeNode();
        newNode.Text = funname;
        newNode.Value = id;
        //newNode.NavigateUrl = ResolveUrl(url.Trim());
        return newNode;
    }

    private void CreateChildNode(string nodeid, TreeNode parentnode)
    {
        IList<Node> children = GetData(nodeid);
        foreach (Node child in children)
        {
            TreeNode childnode = this.CreateTreeNode(child.Name, child.ID, child.Url);
            CreateChildNode(child.ID, childnode);
            AddTree(parentnode, childnode);
        }

    }
    private void AddTree(TreeNode fathernode, TreeNode chilenode)
    {
        fathernode.ChildNodes.Add(chilenode);
    }
    private IList<Node> GetData(string id)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ToString());
        SqlCommand cmd = new SqlCommand("select funid,funname,funurl from releasefuninfo where [email protected]", con);
        cmd.Parameters.AddWithValue("id", id);
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        List<Node> nodes = new List<Node>();
        while (reader.Read())
        {
            Node n = new Node();
            n.ID = reader["funid"].ToString();
            n.Name = reader["funname"].ToString();
            n.Url = reader["funurl"].ToString();
            nodes.Add(n);
        }
        return nodes;
    }


    protected void TreeView1_SelectedNodeChanged1(object sender, EventArgs e)
    {
      
        string current = ((TreeView)sender).SelectedNode.Value;
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ToString());
        SqlCommand cmd = new SqlCommand("select funname,funurl,displayid from releasefuninfo where [email protected]", con);
        cmd.Parameters.AddWithValue("id", current);
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            txtMenu_Name.Text = reader["funname"].ToString();
            txtMenu_http.Text = reader["funurl"].ToString();
            if (reader["displayid"].ToString() == "1")
            {
                chkMenu_Lock.Checked = true;
            }
            else
            {
                chkMenu_Lock.Checked = false;

            }
        }
    }
    private void GetParentNodes()
    {
      
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ToString());
        SqlCommand cmd = new SqlCommand("select funid, funname from releasefuninfo where fatherid=0", con);
     
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader();
       
        while (reader.Read())
        {
            ListItem  item=new ListItem();
            item.Text = reader["funname"].ToString();
            item.Value = reader["funid"].ToString();
            txtMenu_FaterID.Items.Add(item);
        }
        con.Close();
    }
    public class Node
    {
        public string ID { get; set; }
        public string Name { get; set; }
        public string Url { get; set; }
    }
}

嘿嘿 ,最近终于找到一个简洁的方式来填充它了,很是开心,代码如下:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class TreeViewTest : System.Web.UI.Page
{
    DataSet ds ;
    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            ds = new DataSet();
           SqlConnection con = new SqlConnection(SqlHelp.Constr);
        SqlDataAdapter sda = new SqlDataAdapter("select * from releasefuninfo", con);
        sda.Fill(ds); 
            GridView1.DataSource = ds.Tables[0].DefaultView;
        GridView1.DataBind();
       AddNode(TreeView1.Nodes, "0");
        }
        
      
    }
    private void AddNode(TreeNodeCollection nodes, string id)
    {
        DataView dv = new DataView();
        dv.Table = ds.Tables[0];
        dv.RowFilter = "fatherid=" + "'" + id + "'";
        TreeNode tn;
        foreach (DataRowView v in dv)
        {
            tn = new TreeNode();
            tn.Value = v["funid"].ToString();
            tn.Text = v["funname"].ToString();
            tn.NavigateUrl = ResolveUrl( v["funurl"].ToString());
            nodes.Add(tn);
            AddNode(tn.ChildNodes, tn.Value);
        }
    }
}
类似的用法可以用子Menu控件上;

转载于:https://www.cnblogs.com/LittleFeiHu/archive/2011/02/27/1963524.html