private void setTreeView(TreeView tr1, string cparentId)
{
int i_count;
string str_table = "pbom";
string str_sql = "select partid,t.part_name,parentid from pbom p join parts t on p.partid = t.part_no where parentId='" + cparentId + "';";
DataSet ds = boperate.getds(str_sql, str_table);
i_count = ds.Tables[0].Rows.Count;
if (i_count > 0)
{
string pId = "-1";
foreach (DataRow row in ds.Tables[0].Rows)
{
TreeNode node = new TreeNode();
node.Text = row["part_name"].ToString();
node.Tag = row["partid"].ToString();
pId = row["parentId"].ToString();
if (pId == "0")
{
//添加根节点
tr1.Nodes.Add(node);
}
else
{
//添加根节点之外的其他节点
RefreshChildNode(tr1, node, pId);
}
//查找以node为父节点的子节点
setTreeView(tr1, node.Tag.ToString());
}
}
tvBom.ExpandAll();
}
private void RefreshChildNode(TreeView tr1, TreeNode treeNode, string parentId)
{
foreach (TreeNode node in tr1.Nodes)
{
if (node.Tag.ToString() == parentId)
{
node.Nodes.Add(treeNode);
return;
}
else if (node.Nodes.Count > 0)
{
FindChildNode(node, treeNode, parentId);
}
}
}
private void FindChildNode(TreeNode tNode, TreeNode treeNode, string parentId)
{
foreach (TreeNode node in tNode.Nodes)
{
if (node.Tag.ToString() == parentId)
{
node.Nodes.Add(treeNode);
return;
}
else if (node.Nodes.Count > 0)
{
FindChildNode(node, treeNode, parentId);
}
}
}
调用,bom表中没有保存parentid为0的成品,需要新增树根节点。
TreeNode node1 = new TreeNode();
node1.Tag = partNo;
node1.Text = txtPartName.Text.Trim();
tvBom.Nodes.Add(node1);
setTreeView(tvBom, partNo);