foreach循环内访问的TreeView节点 [英] Access TreeView nodes inside a foreach loop
问题描述
我有一个树视图
,我正在使用服务器端方法从数据库中取值填充。
的树视图
被填充和正常工作。
我试图访问的foreach
循环内的树视图
节点,但让我惊讶的是, count属性显示为1的值。
PFB的codeS:
公共无效PopulateTreeView()
{
DataSet的DS =新的DataSet();
数据表dtUltimateParent = GetUltimateParent();
数据表DTA =的getParent();
数据表DTB =的GetChildren();
DataTable的DT1 =新的DataTable();
数据表DT2 =新的DataTable();
数据表DT3 =新的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的]);
如果(ds.Tables [0] .Rows.Count大于0)
{
TreeView1.Nodes.Clear();
的foreach(DataRow的ultimateRow在ds.Tables [0] .Rows)
{
树节点ultimateNode =新的TreeNode((串)ultimateRow [ultimateParentText],Convert.ToString(ultimateRow [ultimateParentID]));
TreeView1.Nodes.Add(ultimateNode);
ultimateNode.Expanded =真;
ultimateNode.SelectAction = TreeNodeSelectAction.None;
的foreach(的DataRow masterRow在ultimateRow.GetChildRows(FirstHierarchy))
{
树节点masterNode =新的TreeNode((串)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在masterRow.GetChildRows(SecondHierarchy))
{
树节点childNode =新的TreeNode((串)childRow [ChildText],Convert.ToString(childRow [childID的]));
masterNode.ChildNodes.Add(childNode);
childNode.Value = Convert.ToString(childRow [孩子]);
}
}
}
}
}
现在,我尝试使用的foreach
循环像下面访问节点:
的String [] myArray的=具有节点的文本数组
的foreach(在TreeView1.Nodes TreeNode的节点)
{
的foreach(在myarray的字符串s)
{
如果(S == node.Text)
{
node.checked = TRUE;
}
}
}
TreeView1.Nodes
只显示其中一个是节点全部
,也为TreeView1 .Nodes.Count
当属1,但整棵树的观点是人口,是pretty可见。
树视图是一样的东西:
所有
一个
A1
a2
乙
B1
B2
我在做正确的方式来遍历树视图节点之间?
专家请指导在这里。
问候
阿努拉格
所有
一个
A1
a2
乙
B1
B2TreeView1.Nodes //这说明上层...访问下的所有节点
你应该使用
TreeView1.Nodes [0] .Nodes //这将显示所有在那意味着节点
A和B ......所以纠正你的code这样
TreeView1.Nodes [0] .Nodes [0] .Nodes ....... A1和A2
I have a tree view
, which I'm populating using a server side method taking values from the DB.
The tree view
gets populated and works fine.
I'm trying to access the Tree View
nodes inside a foreach
loop, but to my surprise, the count property shows value as 1.
PFB the codes:
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"]);
}
}
}
}
}
Now I am trying to access the Nodes using a foreach
loop like below:
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
shows only one node which is 'All'
, also TreeView1.Nodes.Count
comes as 1, but the whole tree view is populated and is pretty visible.
The Tree View is something like:
All
A
a1
a2
B
b1
b2
Am I doing the correct way to iterate amongst the tree view nodes?
Experts please guide over here.
Regards
Anurag
All
A
a1
a2
B
b1
b2
TreeView1.Nodes //this shows the upper hierarchy...to access the nodes under All
you should use
TreeView1.Nodes[0].Nodes //this will show the nodes under All that means
A and B......so correct your code this way
TreeView1.Nodes[0].Nodes[0].Nodes.......a1 and a2
这篇关于foreach循环内访问的TreeView节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!