Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问foreach循环内的TreeView节点_C#_Asp.net_Treeview_Nodes - Fatal编程技术网

C# 访问foreach循环内的TreeView节点

C# 访问foreach循环内的TreeView节点,c#,asp.net,treeview,nodes,C#,Asp.net,Treeview,Nodes,我有一个树视图,我使用服务器端方法从数据库中获取值来填充它 树视图将填充并正常工作 我试图访问foreach循环中的树视图节点,但出乎意料的是,count属性将值显示为1 PFB代码: public void PopulateTreeView() { DataSet ds = new DataSet(); DataTable dtUltimateParent = GetUltimateParent();

我有一个树视图,我使用服务器端方法从数据库中获取值来填充它

树视图将填充并正常工作

我试图访问foreach循环中的树视图节点,但出乎意料的是,count属性将值显示为1

PFB代码:

public void PopulateTreeView()
        {
                DataSet ds = new DataSet();
                DataTable dtUltimateParent = GetUltimateParent();
                DataTable dtA = GetParent();
                DataTable dtB = GetChildren();
                DataTable dt1 = new DataTable();
                DataTable dt2 = new DataTable();
                DataTable dt3 = new DataTable();
                dt1 = dtUltimateParent.Copy();
                dt2 = dtA.Copy();
                dt3 = dtB.Copy();
                ds.Tables.Add(dt1);
                ds.Tables.Add(dt2);
                ds.Tables.Add(dt3);
                ds.Relations.Add("FirstHierarchy", dt1.Columns["ultimateParentID"], dt2.Columns["ParentID"]);
                ds.Relations.Add("SecondHierarchy", dt2.Columns["ParentID"], dt3.Columns["ChildID"]);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    TreeView1.Nodes.Clear();
                    foreach (DataRow ultimateRow in ds.Tables[0].Rows)
                    {
                        TreeNode ultimateNode = new TreeNode((string)ultimateRow["ultimateParentText"], Convert.ToString(ultimateRow["ultimateParentID"]));
                        TreeView1.Nodes.Add(ultimateNode);
                        ultimateNode.Expanded = true;
                        ultimateNode.SelectAction = TreeNodeSelectAction.None;
                        foreach (DataRow masterRow in ultimateRow.GetChildRows("FirstHierarchy"))
                        {
                            TreeNode masterNode = new TreeNode((string)masterRow["ParentText"], Convert.ToString(masterRow["ParentID"]));
                            ultimateNode.ChildNodes.Add(masterNode);
                            masterNode.Value = Convert.ToString(masterRow["ParentID"]);
                            masterNode.Expanded = false;
                            masterNode.SelectAction = TreeNodeSelectAction.None;
                            foreach (DataRow childRow in masterRow.GetChildRows("SecondHierarchy"))
                            {
                                TreeNode childNode = new TreeNode((string)childRow["ChildText"], Convert.ToString(childRow["ChildID"]));
                                masterNode.ChildNodes.Add(childNode);
                                childNode.Value = Convert.ToString(childRow["Child"]);
                            }
                        }
                    }
                }
            }
现在,我尝试使用如下所示的foreach循环访问节点:

string[] myArray=an array having the texts of the Nodes
foreach(TreeNode node in TreeView1.Nodes)
{
    foreach(string s in myArray)
    {
     if(s==node.Text)
     {
      node.checked=true;
     }
   }
}
节点只显示一个“全部”节点,TreeView1.Nodes.Count也显示为1,但整个树视图已填充且非常可见

树视图类似于:

All
  A
    a1
    a2
  B
    b1
    b2
我是否以正确的方式在树视图节点之间进行迭代

请各位专家在这里指导

问候

阿努拉格

你应该使用

TreeView1.Nodes[0].Nodes  //this will show the nodes under All that means
A和B……这样更正你的代码

TreeView1.Nodes[0].Nodes[0].Nodes.......a1 and a2

我应该如何迭代它们??我是否应该尝试获取“All”的子节点,然后对它们进行迭代?您希望对它们进行什么迭代?既然你已经有了用来填充树视图的对象,请检查这个链接递归函数:谢谢..让我试试看see@noobob我可以在节点上迭代,但是进一步的事情不会发生。我正在尝试填充树视图,并根据某些条件尝试检查几个节点。代码流似乎是正确的,但树视图不会在节点之后填充。checked=true发生。您考虑过页面回发吗?树控件仅在回发后才会显示修改。您需要提供更多详细信息,说明您是如何以及在何处执行此实现的,或者更好地使用google itI。我现在能够在节点上进行迭代,但是进一步的代码不起作用,或者我以错误的方式感知。
TreeView1.Nodes[0].Nodes[0].Nodes.......a1 and a2