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

标签 c# asp.net collections treeview

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

关于c# - 我正在使用集合来填充 asp.net 中的 TreeView 。我将如何从树中删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5742931/

相关文章:

java - 是否有与 Javascript 的 "some"方法等效的 Java?

java - 如何在自定义集合上使用 `Collections.min()`?

c# - 如何让当前用户登录到 Windows?

c# - XAML 中的 "The name does not exist in the namespace error"

c# - 如何在 ASP MVC 中将大文件上传到 FTP 服务器

html - td 数据不是单行输入

c# - 禁用打印对话框弹出

C# 通用速记和向上转型

javascript - CheckBoxList 检查单击时的所有项目仅工作一次

java - 如何使用 For 循环的每种类型迭代通用列表