C# 访问foreach循环内的TreeView节点
我有一个树视图,我使用服务器端方法从数据库中获取值来填充它 树视图将填充并正常工作 我试图访问foreach循环中的树视图节点,但出乎意料的是,count属性将值显示为1 PFB代码: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();
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