【问题标题】:How to change color in asp.net(c#) . if treenode checked如何在 asp.net(c#) 中更改颜色。如果树节点检查
【发布时间】:2012-06-27 14:54:35
【问题描述】:

在我的 ASP.NET 应用程序中,使用了启用复选框的 Treeview 控件。在那个树视图中,如果我检查了 treenode 想要在特定的选中节点中显示不同的颜色。见下文

 foreach (treenode node in treeview.nodes)
 {
    if (node.checked == true)
    {
      "change the color of the node" 
    }   
 }

我曾经在编码下面检查这样的节点。但没有标记来改变选中节点的颜色

    protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
    {           

        if (e.Node.ChildNodes.Count > 0)
        {
            CheckAllChildNodes(e.Node, e.Node.Checked);
        }

        if (e.Node.ChildNodes.Count == 0)
        {
            CheckAllParentNodes(e.Node);
        }
     }

     private void CheckAllChildNodes(System.Web.UI.WebControls.TreeNode treeNode, bool nodeChecked)
    {
        foreach (System.Web.UI.WebControls.TreeNode node in treeNode.ChildNodes)
        {
            node.Checked = nodeChecked;

            if (node.ChildNodes.Count > 0)
            {
                this.CheckAllChildNodes(node, nodeChecked);
            }
        }
    }
    private void CheckAllParentNodes(System.Web.UI.WebControls.TreeNode treeNode)
    {
        if (treeNode.Parent != null)
        {
            if (treeNode.Checked == false)
            {
                treeNode.Parent.Checked = false;
                CheckAllParentNodes(treeNode.Parent);
            }
        }
    }

请帮我解决这个问题..

【问题讨论】:

    标签: c# asp.net treeview


    【解决方案1】:

    设置 SelectedNode 的 BackColor 属性可以使其自动。

    treeview.SelectedNodeStyle.BackColor = System.Drawing.Color.Silver;
    

    编辑

    asp.net TreeView 中没有单个节点的 ForeColor 属性。要更改前景色,您必须扩展 TreeNode 并在自定义的 TreeNode 类中应用样式。您将不得不在 TreeView 节点集合中使用这个自定义的 TreeNode,而不是使用默认的 TreeNode 类。详细了解这些文章article 1article 2会对你有所帮助。

    在 HTML 中

    <asp:TreeView ID="TreeView1" runat="server">
        <Nodes>
            <My:CustomTreeNode Text="Node A"
                               Value="Node A">
                <My:CustomTreeNode Text="Node B"
                                   Value="Node B">
                </My:CustomTreeNode>
            </My:CustomTreeNode>
        </Nodes>
    </asp:TreeView>
    

    在代码背后

    public class CustomTreeNode : TreeNode
    {
        protected override void RenderPreText(HtmlTextWriter writer)
        {
           writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "green");
        }
    }
    

    【讨论】:

    • 它不适用于所有选中的节点。仅适用于选定的节点。我想更改树视图中所有选中节点的颜色。
    • 如何查看树形视图的节点?您可以使用这样的 treenode.BackColor = System.Drawing.Color.Silver; 更改选中复选框的节点的颜色
    • 更新了我的答案,请检查是否有帮助。
    • 我想更改节点文本颜色。不是背景色。
    • 据我所知没有直接的方法,我找到了可以为你做的事情forums.asp.net/t/949089.aspx/1
    【解决方案2】:

    如果我清楚你的问题有点棘手,你必须执行以下步骤

    1) 像这样设置树视图的每个节点的文本

    <asp:TreeNode Text='<font color="Red"> Test Inner 1</font>' Value="1"></asp:TreeNode>
    

    2) 在后面的代码中使用以下代码

    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        if(Session["lastNode"] != null)
        {
           TreeNode lastNode = Session["lastNode"] as TreeNode;
    
           TreeNode tn = TreeView1.FindNode(Server.HtmlEncode(lastNode.ValuePath));
           tn.Text = tn.Text.Replace(@"color=""Red""", @"color=""Blue""");
    
         }
    
        Session["lastNode"] = TreeView1.SelectedNode;
    }
    

    【讨论】:

    • 这段代码会改变最后选中节点的颜色,这是你要找的吗?
    • 它将在单个节点上工作。但是假设我检查了父节点也想更改子节点的颜色。这是解决另一个问题。谢谢你
    • 您始终可以循环遍历父节点的子节点,并且使用相同的逻辑可以更改子节点的颜色。如果“lastnode”是父节点,它必须有 lastnode.ChildNodes > 0
    猜你喜欢
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 2023-03-12
    • 2013-10-11
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多