foreach (DataRow dr in rows)
{
TreeNode rootNode = new TreeNode();
rootNode.Text = Convert.ToString(dr["FNAME_L2"]);
rootNode.Tag = dr;
treeView1.Nodes.Add(rootNode);
CreateChild(rootNode, ds.Tables[0]);
}
/// <summary>
/// 创建子节点
/// </summary>
/// <param name="trparent"></param>
/// <param name="id"></param>
public void CreateChild(TreeNode trparent, DataTable dt)
{
DataRow row = (DataRow)trparent.Tag;
string filterStr = "FPARENTID ='" +row[0].ToString() + "'";
DataRow[] rows = dt.Select(filterStr);
if (rows.Length == 0)
return;
else
{
foreach (DataRow dr in rows)
{
TreeNode treeNode = new TreeNode();
treeNode.Text = Convert.ToString(dr["FNAME_L2"]);
treeNode.Tag = dr;
trparent.Nodes.Add(treeNode);
CreateChild(treeNode, dt);
}
}
}
/// <summary>
/// 遍历树
/// </summary>
/// <param name="tnParent"></param>
/// <param name="strValue"></param>
/// <returns></returns>
private TreeNode FindNode(TreeNode tnParent, string strValue)
{
if (tnParent == null) return null;
DataRow dr = (DataRow)tnParent.Tag;
if (tnParent.Text == strValue && dr["FLONGNUMBER"].ToString() == dataGridView1.CurrentRow.Cells["departmentid"].Value.ToString()) return tnParent;//还要判断别的,因为部门名有很多一样的,他只能查出第一个看到的
TreeNode tnRet = null;
foreach (TreeNode tn in tnParent.Nodes)
{
tnRet = FindNode(tn, strValue);
if (tnRet != null) break;
}
return tnRet;
}