asp.net treeview以编程方式设置节点颜色

时间:2011-11-21 23:02:59

标签: asp.net treeview

我想在运行时设置树视图的节点颜色。我从具有parentid,childid和description的集合中填充树视图,并且我添加了一个表示我想要应用于节点的颜色的属性。 FWIW源是一个数据库,应用程序是C#。

在gridview中,我使用RowDataBound()以编程方式影响控件。我不知道如何在树视图中这样做,包括使用哪个事件(DataBound()?TreeViewDataBound()?)。到目前为止,我的研究还没有取得多少成果。代码片段非常有用。

4 个答案:

答案 0 :(得分:4)

希望这会给你一个强烈的线索。

设置节点文本时,而不是设置

Node Text

设为

<div style='color: red'>Node Text</a>

答案 1 :(得分:2)

您可以使用Prerender事件:

protected void TreeView1_PreRender(object sender,EventArgs e)

{
    if (IsPostBack) return;

    foreach (TreeNode t in TreeView1.Nodes)
    {
        if (t.Value.EndsWith("1")) //Some Condition
        {
            string s = t.Text;
            string fs = "<span style=\"color: #CC0000\">" + s + "</span>";
            t.Text = fs;
        }
    }
}

答案 2 :(得分:0)

假设您正在处理标准的TreeView控件,可以在TreeDataBound Event中执行此操作。

一个简短的例子(未经测试):

<asp:TreeView runat="server"
    ID="tvMyTreeView"
    OnTreeNodeDataBound="tvMyTreeView_TreeNodeDataBound"
    />

后端:

protected void tvMyTreeView_TreeNodeDataBound(object sender, TreeNodeEventArgs e)
{
    DataRowView dr = (DataRowView)e.Node.DataItem;
    e.Node.Style.Add("color", dr["COLOR"].ToString());
}

如果您使用的是Telerik RadTreeView,则事件名称为NodeDataBound

您可能需要调整示例以更好地满足您的需求,但希望这会让您开始。

答案 3 :(得分:0)

从.NET Framework 4.5开始,您可以使用以下样式属性: