【问题标题】:Set SelectAction on all tree nodes for ASP.NET TreeView control在 ASP.NET TreeView 控件的所有树节点上设置 SelectAction
【发布时间】:2013-04-26 14:26:17
【问题描述】:

我在 ASP 页面上有一个 TreeView Web 控件。我正在以编程方式填充所有树节点。我想禁用所有树节点上的链接。我可以一次做一个,像这样(为简单起见使用字符串数组):

for each (string strValue in strValues)
{
TreeNode objNode = new TreeNode(strValue);
objNode.SelectAction = TreeNodeSelectAction.None;
objTreeView.Nodes.Add(objNode);
}

为了论证,假设我有多个级别的节点,所以一旦我完成填充,就没有一种简单的方法可以遍历所有节点。我可以在 TreeView 上设置一个属性来为所有节点设置 SelectAction 吗?

【问题讨论】:

    标签: c# web-controls


    【解决方案1】:

    TreeView 不支持执行此操作的任何属性。但是你可以使用递归方法来做到这一点

    【讨论】:

    • 谢谢。我只是在创建每个节点时设置 SelectAction,再次遍历它们是没有意义的。我曾希望 TreeView 级别有一个属性可以禁用所有节点,就像“objTreeView.ShowCheckBoxes = TreeNodeTypes.None”一样。
    【解决方案2】:

    这应该可以解决您的问题:

        protected void Page_Load(object sender, EventArgs e)
        {
            processNode(trvTest.Nodes);
        }
    
        private void processNode(TreeNodeCollection nodes)
        {
            foreach (TreeNode node in nodes)
            {
                node.SelectAction = TreeNodeSelectAction.None;
                if (node.ChildNodes.Count > 0)
                    processNode(node.ChildNodes);
            }
        }
    

    【讨论】:

    • 是的,你把我写的东西拿来递归了。但我一直在寻找的是一个默认情况下将所有节点设置为无的属性。我不想遍历所有节点。不过谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    相关资源
    最近更新 更多