访问foreach循环中的TreeView节点
本文关键字:TreeView 节点 foreach 循环 访问 | 更新日期: 2023-09-27 17:57:32
我有一个tree view
,我使用服务器端方法从DB中获取值来填充它。
tree view
已填充并运行良好。
我试图访问foreach
循环中的Tree View
节点,但令我惊讶的是,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
只显示了一个节点,即'All'
,TreeView1.Nodes.Count
也是1,但整个树视图都是填充的,非常可见。
树状视图类似于:
All
A
a1
a2
B
b1
b2
我是否以正确的方式在树视图节点之间进行迭代?
请专家到这里来指导。
问候
Anurag
All
A
a1
a2
B
b1
b2
TreeView1.Nodes //this shows the upper hierarchy...to access the nodes under All
你应该使用
TreeView1.Nodes[0].Nodes //this will show the nodes under All that means
A和B……所以用这种方式更正你的代码
TreeView1.Nodes[0].Nodes[0].Nodes.......a1 and a2