关于无限级菜单

eyis 2005-09-26 03:27:38
Id
PId
ItemName
这是数据库的结构

怎么用递归还原数据库里的菜单啊

不能用DataReader把?

最好有个例子 谢谢
...全文
263 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
eyis 2005-09-28
  • 打赏
  • 举报
回复
问题没解决 DDD
winter7171 2005-09-27
  • 打赏
  • 举报
回复
小山同学那个似乎不能实现无限级吧,还是要用递归
wanghui0380 2005-09-27
  • 打赏
  • 举报
回复
public class admin_subTreeView : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
protected DataTable dataTbl1,dataTbl2;
protected int deep=1;


private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
//InitRootNodeDataTable();
InitTreeRootNode(TreeView1.Nodes);
TreeView1.ExpandLevel = 1;
// TreeView1.Nodes[80].Expanded=true;
// InitTree(TreeView1.Nodes,"0");
}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
private void InitTreeRootNode(TreeNodeCollection TNC)
{
huoz.subIndex myauth=new huoz.subIndex();
DataView dataView = new DataView();
dataView = myauth.subIndexType();

{

foreach(DataRowView drv in dataView)
{
string tempxx="";

TreeNode tn = new TreeNode();
tn.ID = drv["type"].ToString().Trim();
switch(drv["type"].ToString().Trim())
{
case "1":
tempxx="网站推介页面";
break;
case "2":
tempxx="信息服务分销";
break;
case "3":
tempxx="增值产品分销 ";
break;
case "4":
tempxx=" SOHO项目搜索";
break;
}
tn.Text = "<span onmousemove=javascript:title=''>"+tempxx+"</span>";
//tn.ImageUrl = GetIcon(drv["ClassType"].ToString());
tn.NavigateUrl = "admin_subView.aspx?Action=1&type="+drv["type"].ToString().Trim();
tn.Target = "mainFrame";
TNC.Add(tn);
//InitChildNodeDataTable(Int32.Parse(tn.ID.ToString()));
InitTreeChildNode(tn.Nodes,tn.ID,0);
}
}
dataTbl1 = null;
dataTbl2 = null;
}

private void InitTreeChildNode(TreeNodeCollection TNC,string classParentID, int con)
{
DataView dataView = new DataView();
if(con==0)
{
huoz.subIndex myauth=new huoz.subIndex();
dataView= myauth.subIndexTreeview(classParentID);
}
else
{
huoz.subIndex myauth=new huoz.subIndex();
dataView= myauth.subIndexTreeview1(classParentID);

}
foreach(DataRowView drv in dataView)
{
TreeNode tn = new TreeNode();
tn.ID = drv["id"].ToString().Trim();
tn.Text = "<span onmousemove=javascript:title='"+drv["name"].ToString().Trim()+"'>"+drv["name"].ToString().Trim()+"</span>";
//tn.ImageUrl = GetIcon(drv["ClassType"].ToString());
tn.NavigateUrl = "admin_subView.aspx?Action=1&ClassID="+drv["id"].ToString().Trim();
tn.Target = "mainFrame";
TNC.Add(tn);
InitTreeChildNode(tn.Nodes,tn.ID,1);
}
}


}
}
wanghui0380 2005-09-27
  • 打赏
  • 举报
回复
晕,随便一个treeview的代码例子就是你要的
eyis 2005-09-27
  • 打赏
  • 举报
回复
要无限级啊~~~
eyis 2005-09-27
  • 打赏
  • 举报
回复
另外 TreeView的问题:

怎么让菜单 变成纯文本的 不要鼠标效果

有属性控制么?

要是用css解决,请给两句代码 谢谢
eyis 2005-09-27
  • 打赏
  • 举报
回复
有不用treeview的么?????
太不灵活
要在tree上实现增删改
asp上实现挺简单的
换了.net反而更困难了
kisshere 2005-09-26
  • 打赏
  • 举报
回复
No, I think we should use recursion to implement it.
singlepine 2005-09-26
  • 打赏
  • 举报
回复
用循环就可以了,第一次输出第一级,然后第二第三,依次类推,如
string sql="";
sql ="select * from tablename where PId="+一级菜单参数;
for(int i=0;i<一级菜单总数目;i++)
{
//输出一级菜单,一级[i]
sql ="select * from tablename where PId="+二级菜单参数;
for(int i=0;i<二级菜单总数目;i++)
{
//输出二级菜单
sql ="select * from tablename where PId="+三级菜单参数;
for(int i=0;i<三级级菜单总数目;i++)
{
//输出三级菜单
}
}
}
pmmx 2005-09-26
  • 打赏
  • 举报
回复
mark
eyis 2005-09-26
  • 打赏
  • 举报
回复
用xml实现也行

62,243

社区成员

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

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

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

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