【问题标题】:Looping through array to add each item to a parentNode循环遍历数组以将每个项目添加到 parentNode
【发布时间】:2016-10-02 16:20:18
【问题描述】:

我有以下代码:

TreeNode parentNode1 = new TreeNode("CONNECTING RODS");
TreeViewNav.Nodes.Add(parentNode1);

string[] subNodes =
{
    "STOCK", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
    "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
};

foreach (var node in subNodes)
{
    parentNode1.ChildNodes.Add(node);
}

所以我基本上是在尝试这样做,但以一种更简洁的方式:

TreeNode childNodeA = new TreeNode("A");
TreeNode childNodeB = new TreeNode("B");
TreeNode childNodeC = new TreeNode("C");
TreeNode childNodeD = new TreeNode("D");
TreeNode childNodeE = new TreeNode("E");
TreeNode childNodeF = new TreeNode("F");

parentNode1.ChildNodes.Add(childNodeA);
parentNode1.ChildNodes.Add(childNodeB);
parentNode1.ChildNodes.Add(childNodeC);
parentNode1.ChildNodes.Add(childNodeD);
parentNode1.ChildNodes.Add(childNodeE);
parentNode1.ChildNodes.Add(childNodeF);

我在parentNode1.ChildNodes.Add(node); 行收到错误消息。 错误是

'string' 不可分配给参数类型 'System.Web.UI.WebControls.TreeNode'

我知道它是因为我已将数组设为字符串数组,但我不知道该怎么做,任何帮助将不胜感激:)

【问题讨论】:

  • parentNode1.ChildNodes.Add(new TreeNode(node));

标签: c# asp.net arrays treeview treenode


【解决方案1】:

ChildNodes.Add 期待一个 TreeNode 对象,但您传递给它的是一个 string。你应该:

foreach (var node in subNodes)
{
    parentNode1.ChildNodes.Add(new TreeNode(node));
}

关于添加子子节点:

foreach (var node in subNodes)
{
    var treeNode = new TreeNode(node);
    //Call function that returns all the sub-sub nodes
    //Assign those nodes to 'treeNode' using another foreach - or better still have this as a recursive function
    parentNode1.ChildNodes.Add(treeNode);
}

【讨论】:

  • 嗯,你的速度很快,对不起,我没看到你的答案
  • @Sajeetharan - 没关系 :) 我看到你稍后发布了它,所以我认为是这样 :)
  • 谢谢,很抱歉,我有一个名为 GetData() 的函数,我用它来调用数据库,在参数中它期望一个 sql 查询,但我不知道如何添加这个到你给我看的代码
  • @Luke - 我的 cmets 使用 node 调用您的 GetData 方法。您可以分配给treeNode的孩子的结果
  • 我仍然不明白这是如何创建子节点的,因为创建子节点我只是调用了我放在主节点中的参数并添加了一个子节点?
【解决方案2】:

你应该使用TreeNode类型的字符串试试这个,

foreach (var node in subNodes)
{
    parentNode1.ChildNodes.Add(new TreeNode(node));
}

【讨论】:

  • 我还想将 ChildNodes 添加到那些 ChildNodes 我该怎么做?
  • 你可以用 this 来处理父节点, var result = treeView1.Nodes.OfType() .FirstOrDefault(node => node.Name.Equals("name")); stackoverflow.com/questions/24279097/…
  • 然后调用 add(new TreeNode(whatever));
  • @LukeRayner - 如果您向我们展示您如何存储子子节点的值以及您如何知道如何在子子和子子之间建立连接,那么我们将能够提供更好的帮助跨度>
  • 我的子子节点将来自数据库。我有一个名为 [Part Number] 的列,我想用它来调用数据,我想在页面上显示名为 [Description] 的列中的数据
猜你喜欢
  • 2021-02-05
  • 1970-01-01
  • 2022-07-19
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多