CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

关于无限级菜单

楼主eyis(光芒上线)2005-09-26 15:27:38 在 .NET技术 / ASP.NET 提问

Id  
  PId  
  ItemName  
  这是数据库的结构  
   
  怎么用递归还原数据库里的菜单啊  
   
  不能用DataReader把?  
   
  最好有个例子   谢谢 问题点数:50、回复次数:11Top

1 楼eyis(光芒上线)回复于 2005-09-26 15:29:01 得分 0

用xml实现也行Top

2 楼pmmx(胖子)回复于 2005-09-26 17:44:37 得分 0

markTop

3 楼singlepine(小山)回复于 2005-09-26 20:47:35 得分 50

用循环就可以了,第一次输出第一级,然后第二第三,依次类推,如  
  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++)  
                        {  
                            //输出三级菜单  
                        }  
              }  
  }Top

4 楼kisshere(( One of my personalities is shameless ))回复于 2005-09-26 22:25:00 得分 0

No,   I   think   we   should   use   recursion   to   implement   it.Top

5 楼winter7171(小木)回复于 2005-09-27 00:41:15 得分 0

小山同学那个似乎不能实现无限级吧,还是要用递归Top

6 楼eyis(光芒上线)回复于 2005-09-27 11:08:07 得分 0

要无限级啊~~~Top

7 楼wanghui0380(放歌)回复于 2005-09-27 11:25:22 得分 0

晕,随便一个treeview的代码例子就是你要的Top

8 楼wanghui0380(放歌)回复于 2005-09-27 11:27:22 得分 0

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);  
  }  
  }  
   
   
  }  
  }Top

9 楼eyis(光芒上线)回复于 2005-09-27 13:33:06 得分 0

有不用treeview的么?????  
  太不灵活  
  要在tree上实现增删改  
  asp上实现挺简单的  
  换了.net反而更困难了Top

10 楼eyis(光芒上线)回复于 2005-09-27 15:14:27 得分 0

另外   TreeView的问题:  
   
    怎么让菜单   变成纯文本的   不要鼠标效果    
   
    有属性控制么?  
   
    要是用css解决,请给两句代码   谢谢Top

11 楼eyis(光芒上线)回复于 2005-09-28 08:50:45 得分 0

问题没解决   DDDTop

相关问题

  • 基于xml实现无限级菜单
  • 哪有支持无限级的树型菜单源码?
  • 求asp+xml+xsl生成的无限级分类开合菜单
  • 谁有阿信的无限级关联菜单?
  • 高分求教无限级树行菜单的问题。。。。。
  • asp.net中关于无限级下拉菜单的实现
  • 求阿信的无限级关联下拉菜单
  • 左侧无限分级弹出菜单的问题,哪位帮忙看看
  • 求无限级下拉联动菜单(要有数据库连接)
  • 经典css菜单,无限级朝右弹,代码短之极致了。

关键词

  • tn
  • huoz
  • tempxx
  • myauth
  • dataview
  • subindex
  • drv
  • classparentid
  • inittreechildnode
  • 菜单

得分解答快速导航

  • 帖主:eyis
  • singlepine

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo