关于递归组织HTML的问题

海の云 2010-11-14 12:07:00
我想实现一个效果是这样的
<ul>
<li><a href="#">××集团</a></li>
<li><a href="#">董事长室</a></li>

<li><a href="#">总经理室</a></li>
<li class="open"><a href="#">行政中心</a>
<!--Second Menu Begin-->
<ul>
<li><a href="#">信息部</a></li>
<li><a href="#">党委工会</a></li>
<li class="open"><a href="#">人事行政部</a>

<!--Third Menu Begin-->
<ul>
<li><a href="#">人力资源科</a></li>
<li><a href="#">行政科</a></li>
</ul>
<!--Third Menu End-->
</li>
<li><a href="#">财务部</a></li>

<li><a href="#">物流采购部</a></li>
<li><a href="#">企业管理部</a></li>
</ul>
<!--Second Menu End-->
</li>
</ul>


我后台写的代码是这样
protected string DoRecursiveHTML(DataSet ds, string nodeID)
{
//StringBuilder sb = new StringBuilder();

DataView dv = ds.Tables[0].DefaultView;
dv.RowFilter = " ParentID = '" + nodeID + "'";

//TreeView1.no
//sb.Append("<ul>");
string retStr = "<ul>";
foreach (DataRowView row in dv)
{
//sb.AppendFormat("<li><a href=\"javascript:alert('{0}')\">{1}</a>{2}</li>", row["NodeID"].ToString(), row["NodeName"].ToString(), DoRecursiveHTML(ds, row["NodeID"].ToString()));
retStr = retStr + "<li><a href=\"javascript:alert('";
retStr = retStr + row["NodeID"].ToString();
retStr = retStr + "')\">";
retStr = retStr + row["NodeName"].ToString();
retStr = retStr + "</a>";
retStr = retStr + DoRecursiveHTML(ds, row["NodeID"].ToString());
retStr = retStr + "</li>";
}

retStr = retStr + "/<ul>";

//return sb.ToString();
return retStr;
}

但是这个递归不起作用 不知道问题出在哪里
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2010-11-22
  • 打赏
  • 举报
回复
如果ParentID 是字符串格式的,需要调整下面的过滤条件

dv.RowFilter = " ParentID = '" + nodeID + "'";
孟子E章 2010-11-22
  • 打赏
  • 举报
回复
调用方法
String html = DoRecursiveHTML(ds, "0"); //0表示第一级节点的parentID
Response.Write(html);
孟子E章 2010-11-22
  • 打赏
  • 举报
回复
 protected string DoRecursiveHTML(DataSet ds, string nodeID)
{
//StringBuilder sb = new StringBuilder();

DataView dv = ds.Tables[0].DefaultView;
dv.RowFilter = " ParentID = " + nodeID;

if (dv.Count > 0)
{
string retStr = "<ul>";
foreach (DataRowView row in dv)
{
retStr = retStr + "<li><a href=\"javascript:alert('";
retStr = retStr + row["NodeID"].ToString();
retStr = retStr + "')\">";
retStr = retStr + row["NodeName"].ToString();
retStr = retStr + "</a>";
retStr = retStr + DoRecursiveHTML(ds, row["NodeID"].ToString());
retStr = retStr + "</li>";
}
retStr = retStr + "</ul>";
return retStr;
}
else
{
return "";
}
}
W346119044 2010-11-14
  • 打赏
  • 举报
回复
打酱油……
海の云 2010-11-14
  • 打赏
  • 举报
回复
错误是没有产生正确的递归效果
kkbac 2010-11-14
  • 打赏
  • 举报
回复
错误是什么>

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧