在树视图控件中隐藏节点

时间:2010-11-04 20:42:15

标签: c# asp.net visual-studio treeview

我在HTML页面中创建了一个树视图

<asp:TreeView ID="TreeView1" runat="server" 
           onselectednodechanged="TreeView1_SelectedNodeChanged" 
           PopulateNodesFromClient="False" onunload="TreeView1_Unload">
           <Nodes>

               <asp:TreeNode Text="Reports" Value="Report">

               <asp:TreeNode Text="Status" Value="Service">
                   </asp:TreeNode>

                   <asp:TreeNode Text="Status" Value="Status">
                   </asp:TreeNode>

                   <asp:TreeNode Text="Stats" 
                       Value="Stats"></asp:TreeNode>

               </asp:TreeNode>
           </Nodes>
       </asp:TreeView>

现在我想在我的代码后面的页面加载函数中隐藏Stats节点....

任何建议..谢谢

5 个答案:

答案 0 :(得分:1)

我使用Telerik RadTreeView; TreeView没有每个节点的DataBound事件和Visible属性。以下是删除TreeView的子节点的代码。

protected void Page_Load(object sender, EventArgs e)
{
  RemoveNodeRecurrently(TreeView1.Nodes, "Status");
}

private void RemoveNodeRecurrently(TreeNodeCollection childNodeCollection, string text)
{
  foreach (TreeNode childNode in childNodeCollection)
  {
    if (childNode.ChildNodes.Count > 0)
      RemoveNodeRecurrently(childNode.ChildNodes, text);

    if (childNode.Text == text)
    {
      TreeNode parentNode = childNode.Parent;
      parentNode.ChildNodes.Remove(childNode);
      break;
    }
  }
}

答案 1 :(得分:1)

你可以尝试这个,它只适用于Leaf节点。

TreeView1.Nodes[0].Text = "";

TreeView1.Nodes[0].ShowCheckBox = false;

P.S:您需要一个递归函数来访问每个节点。

答案 2 :(得分:0)

将节点文本设置为“”并且不会呈现它。

答案 3 :(得分:0)

![这就是我的用法。] [1]

protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["type"] == null)
        {
            RemoveNodeRecurrently(rptTree.Nodes, "Create Users");
        }

        if (Session["user"] != null)
        {
        }
        else
        {
            Response.Redirect(ConfigurationManager.AppSettings.Get("RootFolder") + "/ERP - Login.aspx");
        }
    }

    private void RemoveNodeRecurrently(TreeNodeCollection childNodeCollection, string text)
    {
        foreach (TreeNode childNode in childNodeCollection)
        {
            if (childNode.ChildNodes.Count > 0)
                RemoveNodeRecurrently(childNode.ChildNodes, text);

            if (childNode.Text == text)
            {
                TreeNode parentNode = childNode.Parent;
                parentNode.ChildNodes.Remove(childNode);
                break;
            }
        }
    }

答案 4 :(得分:0)

protected void Page_Load(object sender, EventArgs e)`{

TreeView1.Nodes.RemoveAt(2); }`