Skip to main content
 首页 » 编程设计

c#之我正在使用集合来填充 asp.net 中的 TreeView 。我将如何从树中删除节点

2024年01月12日36开发

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 ETG.TechnicalEditorialDEL; 
using ETG.TechnicalEditorialBAL; 
using System.Collections.Generic; 
 
namespace TechnicalEditorialWebUI.MasterEditorialPage 
{ 
    public partial class ConfigurationSettings : System.Web.UI.Page 
    { 
        List<TreeList> lstTreeList = new List<TreeList>(); 
        protected void Page_Load(object sender, EventArgs e) 
        { 
            if (!IsPostBack) 
            { 
                PopulateComponentType(); 
                PopulateComponent(); 
            } 
        } 
    public void PopulateComponentType() 
    { 
        GetLookUpData getLookUpData = new GetLookUpData(); 
        ddlComponentType.DataSource = getLookUpData.GetComponentTypes(); 
        ddlComponentType.DataValueField = "ComponentTypeId"; 
        ddlComponentType.DataTextField = "ComponentTypeDesc"; 
        ddlComponentType.DataBind(); 
    } 
 
    public void PopulateComponent() 
    { 
        ComponentType componentType = new ComponentType { ComponentTypeId = Convert.ToInt32(ddlComponentType.SelectedValue) }; 
        GetLookUpData getLookUpData = new GetLookUpData(); 
        lstComponent.DataSource = getLookUpData.GetComponentByComponentType(componentType); 
        lstComponent.DataValueField = "ComponentId"; 
        lstComponent.DataTextField = "ComponentTypeDesc"; 
        lstComponent.DataBind(); 
    } 
 
    protected void ddlComponentType_SelectedIndexChanged(object sender, EventArgs e) 
    { 
        lstComponent.Items.Clear(); 
        PopulateComponent(); 
    } 
 
    protected void btnAdd_Click(object sender, EventArgs e) 
    { 
        if (ViewState["TreeList"] == null) 
        { 
            CreateTree(lstTreeList); 
        } 
        else 
        { 
            List<TreeList> newLstTree = (List<TreeList>)ViewState["TreeList"]; 
            CreateTree(newLstTree); 
        } 
    } 
 
    protected void btnRemove_Click(object sender, EventArgs e) 
    { 
        //if (ViewState["TreeList"] == null) 
        //{ 
 
        //    CreateTree(lstTreeList); 
        //} 
        //else 
        { 
            RemoveNodeFromTree(); 
        } 
    } 
 
    private void CreateTreeWithNodes() 
    {            
        //var newLstTree = ((List<TreeList>)ViewState["TreeList"]).OrderBy(x=>x.Parent).Select(x=>x); 
 
        //var newLstTree = (from t in (List<TreeList>)ViewState["TreeList"] 
        //                  orderby t.Parent.Keys ascending 
        //                  select t).ToList(); 
 
 
 
        TreeView1.Nodes.Clear(); 
 
 
        foreach (TreeList item in (List<TreeList>)ViewState["TreeList"]) 
        { 
            TreeNode treeNode = new TreeNode(); 
 
            foreach (var key in item.Parent) 
            {                     
                treeNode.Text = key.Value; 
                treeNode.Value = key.Key; 
            } 
 
            foreach (var child in item.Child) 
            { 
                foreach (var key in child) 
                { 
                    treeNode.ChildNodes.Add(new TreeNode(key.Value, key.Key)); 
                } 
            } 
            TreeView1.Nodes.Add(treeNode); 
        } 
    } 
 
    private void CreateTree(List<TreeList> lstTreeList) 
    { 
        TreeList objTreeList = new TreeList(); 
        objTreeList.Child = new List<Dictionary<string, string>>(); 
        objTreeList.Parent = new Dictionary<string, string>();  
        objTreeList.Parent.Add(ddlComponentType.SelectedValue, ddlComponentType.SelectedItem.Text); 
 
        Dictionary<string, string> temp = null; 
 
        foreach (ListItem item in lstComponent.Items) 
        { 
            if (item.Selected) 
            { 
                temp = new Dictionary<string, string>(); 
                temp.Add(item.Value, item.Text); 
                objTreeList.Child.Add(temp); 
 
                //  treeNode.ChildNodes.Add(new TreeNode(item.Text, item.Value)); 
            } 
        } 
 
        lstTreeList.Add(objTreeList); 
 
        ViewState["TreeList"] = lstTreeList; 
        CreateTreeWithNodes(); 
    } 
 
    private void RemoveNodeFromTree() 
    { 
        List<TreeList> newLstTree = lstTreeList; 
        string strNode= TreeView1.SelectedNode.Parent.Value; 
 
        TreeList objTreeList = new TreeList(); 
 
        //treeNode.Text = TreeView1.SelectedNode.Parent.Text; 
        //treeNode.Value = TreeView1.SelectedNode.Parent.Value;           
 
        //foreach (var  treeListObject in treeView) 
        //{ 
        //    if (treeListObject.Child == TreeView1.SelectedNode.Text) 
        //    { 
 
        //    } 
        //} 
 
        //treeNode.ChildNodes.Remove(new TreeNode(TreeView1.SelectedNode.Value,  TreeView1.SelectedNode.Text)); 
 
 
        //TreeView1.Nodes.Add(treeNode); 
 
        //Dictionary<string, string> temp = new Dictionary<string,string>(); 
 
        //objTreeList.Parent.Add(TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Parent.Text); 
 
        //temp.Add(TreeView1.SelectedNode.Value,  TreeView1.SelectedNode.Text); 
        //objTreeList.Child.Add(temp); 
 
        //newLstTree.Remove(objTreeList);            
    } 
} 
 
[Serializable] 
class TreeList : IComparable 
{ 
    public Dictionary<string, string> Parent { get; set; } 
 
    public List<Dictionary<string, string>> Child { get; set; } 
 
    #region IComparable Members 
 
    public int CompareTo(object obj) 
    { 
        throw new NotImplementedException(); 
    } 
 
    #endregion         
} 
 } 

请您参考如下方法:

TreeNode tn = TreeView1.FindNode("Nodepath"); // find particular node 
TreeView1.Remove(tn); // then remove from TreeView