如何遍历树
答案:1 悬赏:10 手机版
解决时间 2021-03-06 07:25
- 提问者网友:半生酒醒
- 2021-03-05 15:42
如何遍历树
最佳答案
- 五星知识达人网友:往事隔山水
- 2021-03-05 17:11
递归算法
C#语言
getcomByDt() 是数据源,处理成一个datatable类型的
///
/// 绑定树状菜单
///
private void BindClassM()
{
TreeNode tn = new TreeNode();
DataRow[] row = getcomByDt().Select();
foreach (DataRow rs in row)
{
TreeNode stn = new TreeNode();
stn.Text = rs["ClassName"].ToString();
stn.Value = rs["ID"].ToString();
tvMenu.Nodes.Add(stn);
//ptBind(stn);
//递归算法生成所有级别的下级子菜单
CreateMenu(getcomByDt(), rs["ID"].ToString(), stn);
}
}
private void CreateMenu(DataTable dt, string p, TreeNode stn)
{
DaProductsClass Dp = new DaProductsClass();
EnProductsClass Mp = new EnProductsClass();
string strWhere = " ParentId='" + p.ToString() + "'";
dt = Dp.GetTree(strWhere);
DataRow[] drs = dt.Select();
if (dt == null)
{
return;
}
if (dt.Rows.Count == 0)
{
return;
}
TreeNode tn = null;
foreach (DataRow dr in drs)
{
tn = new TreeNode();
tn.Text = dr["ClassName"].ToString();
tn.Value = dr["ID"].ToString();
tn.ToolTip = "产品分类";
stn.ChildNodes.Add(tn);
CreateMenu(dt, dr["ID"].ToString(), tn);
}
}追问不好意思,我对递归的思想理解一直不是很好,可以为我上面的例子单独学个么?我可以加分,拜托了追答你设置个断点多调试调试就能直观的体会了,你可以前台用一个asp:TreeView
datatable 有三个字段就行 id ClassName ParentId
CreateMenu 中自己调用了自己的,一层一层循环直到
if (dt == null)
{
return;
}
if (dt.Rows.Count == 0)
{
return;
}
dt为空也就是没有下级菜单了跳出。具体我也说不清楚
C#语言
getcomByDt() 是数据源,处理成一个datatable类型的
///
/// 绑定树状菜单
///
private void BindClassM()
{
TreeNode tn = new TreeNode();
DataRow[] row = getcomByDt().Select();
foreach (DataRow rs in row)
{
TreeNode stn = new TreeNode();
stn.Text = rs["ClassName"].ToString();
stn.Value = rs["ID"].ToString();
tvMenu.Nodes.Add(stn);
//ptBind(stn);
//递归算法生成所有级别的下级子菜单
CreateMenu(getcomByDt(), rs["ID"].ToString(), stn);
}
}
private void CreateMenu(DataTable dt, string p, TreeNode stn)
{
DaProductsClass Dp = new DaProductsClass();
EnProductsClass Mp = new EnProductsClass();
string strWhere = " ParentId='" + p.ToString() + "'";
dt = Dp.GetTree(strWhere);
DataRow[] drs = dt.Select();
if (dt == null)
{
return;
}
if (dt.Rows.Count == 0)
{
return;
}
TreeNode tn = null;
foreach (DataRow dr in drs)
{
tn = new TreeNode();
tn.Text = dr["ClassName"].ToString();
tn.Value = dr["ID"].ToString();
tn.ToolTip = "产品分类";
stn.ChildNodes.Add(tn);
CreateMenu(dt, dr["ID"].ToString(), tn);
}
}追问不好意思,我对递归的思想理解一直不是很好,可以为我上面的例子单独学个么?我可以加分,拜托了追答你设置个断点多调试调试就能直观的体会了,你可以前台用一个asp:TreeView
datatable 有三个字段就行 id ClassName ParentId
CreateMenu 中自己调用了自己的,一层一层循环直到
if (dt == null)
{
return;
}
if (dt.Rows.Count == 0)
{
return;
}
dt为空也就是没有下级菜单了跳出。具体我也说不清楚
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯