c# - FindNode 方法 TreeView 值中带有正斜杠

标签 c# asp.net sharepoint

我有一个 TreeView 控件。下面的代码用于查找特定的父节点。

TreeView AllProductsTreeView;

TreeNode nodeFound = AllProductsTreeView.FindNode("AAA/Sensors");

AAA - 类别

传感器 - 子类别

这工作正常,但当子类别值包含正斜杠时就会出现问题。

TreeView AllProductsTreeView;

TreeNode nodeFound = AllProductsTreeView.FindNode("AAA/Sensors/Energy");

AAA - 类别

传感器/能源-子类别

在上述情况下,它为 nodeFound 对象返回空值。

如何使用带有正斜杠的查找节点方法来查找子类别。

提前致谢!

最佳答案

字符“/”对于FindNode(主/子节点区分)具有特殊功能,并且似乎没有任何方法可以避免它。一种选择是根本不使用该字符作为节点名称。如果您不想更改名称,可以使用自定义功能来补充内置功能,如下面的代码所示:

string nodePath = "AAA/Sensors/Energy";
TreeNode nodeFound = null;
string[] temp = nodePath.Split('/');
if (temp.Length > 2)
{
    //More than one "/"
    TreeNode mainNode = AllProductsTreeView.FindNode(temp[0]);
    string childPath = nodePath.Substring(temp[0].Length + 1, nodePath.Length - temp[0].Length - 1);
    foreach (TreeNode childNode in mainNode.ChildNodes)
    {
        if (childNode.Value == childPath)
        {
            nodeFound = childNode;
            break;
        }
    }
}
else
{
    nodeFound = AllProductsTreeView.FindNode(nodePath);
}

如您所见,当给定名称包含一个或更少的“/”时,此代码仅依赖于FindNode;在所有其他情况下,它会提取主节点名称,并通过依赖 Value 属性(“/”字符不会触发任何特殊功能)来查看其所有子节点。

澄清:上面的代码可以处理任何验证以下结构的情况(独立于子节点名称中“/”的数量):

Main_node_without_slashes/Child_node_containing_any_number_of_slashes
Main_node_without_slashes

如果主节点包含正斜杠,则必须更新此代码,方法是设置一种方法来告诉代码何时应将“/”理解为主子区分以及何时应将其理解为名称的一部分。

关于c# - FindNode 方法 TreeView 值中带有正斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18119834/

相关文章:

c# - 以编程方式访问 WPF 控件

c# - ASP.NET MVC WebAPI 从异步任务创建 ViewModel

sharepoint - 以编程方式在列表项上设置 TaxonomyField

sharepoint - Sharepoint 中的 .Net 客户端对象模型在执行查询时返回 500 内部服务器错误

c# - 根据 bool 值更改单击时的按钮文本颜色

c# - Surface 2 RT 上的 Windows PDF API 渲染错误

c# - PostSharp 问题无法找到 system.web.mvc 的程序集,版本 = 3.0.0.0 当没有项目引用它时

c# - ASP.NET 从 Session 中删除一个项目?

c# - 无法建立连接,因为目标机器主动拒绝 127.0.0.1 :32450

sharepoint - 在 MOSS 中创建上传站点模板文件 (.stp) 的功能