1

私の ASP.NET アプリケーションでは、チェック ボックスを有効にして Treeview コントロールを使用しました。そのツリービューで、ツリーノードをチェックした場合、チェックされた特定のノードで異なる色を表示したい。下記参照

 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);
            }
        }
    }

この問題を解決するのを手伝ってください..

4

2 に答える 2

6

SelectedNode の BackColor プロパティを設定すると、自動化できます。

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

編集

asp.net TreeView には、個々のノードの ForeColor プロパティはありません。前の色を変更するには、TreeNode を拡張し、カスタマイズした TreeNode クラスにスタイルを適用する必要があります。デフォルトの TreeNode クラスを使用する代わりに、このカスタマイズされた TreeNode を TreeView ノード コレクションで使用する必要があります。詳細な理解については、これらの記事記事 1記事 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");
    }
}
于 2012-06-27T04:54:32.173 に答える
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;
}
于 2012-06-27T06:10:03.090 に答える