tb_food表的结构如图一:
tb_foodtype表的结构如图二:
//获取tb_foodtype表中的所有数据
private void InitDataTable()
{
SqlConnection conn = BaseClass.DBConn.CyCon();
SqlCommand cmd = new SqlCommand("select * from tb_foodtype", conn);
SqlDataAdapter ada = new SqlDataAdapter(cmd);
dt = new DataTable();
ada.Fill(dt);
}
//获取tb_food表中的所有数据
private void InitDataTable1()
{
SqlConnection conn = BaseClass.DBConn.CyCon();
SqlCommand cmd = new SqlCommand("select * from tb_food", conn);
SqlDataAdapter ada1 = new SqlDataAdapter(cmd);
dt1 = new DataTable();
ada1.Fill(dt1);
}
//添加父节点的方法
private void BindRoot()
{
DataRow[] rows = dt.Select();//取根
foreach (DataRow dRow in rows)
{
TreeNode rootNode = new TreeNode();
rootNode.Tag = dRow;
rootNode.Text = dRow["foodtype"].ToString();
控件名.Nodes.Add(rootNode);
BindChildAreas(rootNode);//调用添加子节点的方法
}
}
//添加子节点的方法
//递归绑定子区域
private void BindChildAreas(TreeNode fNode)
{
DataRow dr = (DataRow)fNode.Tag;//父节点数据关联的数据行
int fAreaId = (int)dr["ID"]; //父节点ID
DataRow[] rows1 = dt1.Select("foodty ="+fAreaId);//子区域
if (rows1.Length == 0) //递归终止,区域不包含子区域时
{
return;
}
foreach (DataRow dRow in rows1)
{
TreeNode node = new TreeNode();
node.Tag = dRow;
node.Text = dRow["foodname"].ToString();
//添加子节点
fNode.Nodes.Add(node);
}
}