在我的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);
}
}
}
请帮我解决这个问题..
答案 0 :(得分:6)
设置SelectedNode的BackColor属性可以使其自动。
treeview.SelectedNodeStyle.BackColor = System.Drawing.Color.Silver;
修改强>
asp.net TreeView中的单个节点没有ForeColor属性。要更改前面的颜色,您必须扩展TreeNode并在自定义的TreeNode类中应用样式。您必须在TreeView节点集合中使用此自定义TreeNode,而不是使用默认的TreeNode类。详细了解这些文章article 1, article 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");
}
}
答案 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;
}