C#2003.NET 树的无限级实现

原创 2007年09月26日 10:23:00

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Web.UI.WebControls;
using Website.BusinessRules;

namespace Website.Admin
{
 /// <summary>
 /// LeftTree 的摘要说明。
 /// </summary>
 public class LeftTree : System.Web.UI.Page
 {
  protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
  private clsTreeView cTreeView = new clsTreeView();
  private clsRole cRole = new clsRole();
  private TreeOperator tp=new TreeOperator();
  public static DataTable mTable=new DataTable();
  private void Page_Load(object sender, System.EventArgs e)
  {
   if(Session["user_id"]==null)
   {

    Response.Write("<script language='javascript'>window.top.location.href='Error.aspx'</script>");
   }
   else
   {
    cTreeView.Temp_Del();
    TT_1();
    TT_2();

    CreateTree(null,"0");

   }
  }

  public void TT_1() //得到有权限的栏目信息,写入TEMP表
  { DataSet ds =new DataSet();
   int user_id=int.Parse(Session["user_id"].ToString());
   try
   {
    ds=cTreeView.GetUserRource(user_id);
    DataTable dTable=ds.Tables[0];
    foreach(DataRow dtRow in dTable.Rows)
    {
    cTreeView.Temp_Add(int.Parse(dtRow["RESOURCE_ID"].ToString()),dtRow["RESOURCE_NAME"].ToString(),dtRow["RESOURCE_LINK"].ToString(),int.Parse(dtRow["RESOURCE_PARENT"].ToString()),dtRow["RESOURCE_TYPE"].ToString(),dtRow["RESOURCE_TAG"].ToString());
    }
   
   
   }
   catch{throw;}  
  }
  public void TT_2() //读取TEMP表记录中的RESOURCE_PARENT 父节点,进行处理
  {
   DataSet ds=new DataSet();
   try
   {
    ds=cTreeView.Temp_Get();
    DataTable dTable=ds.Tables[0];
    foreach(DataRow dtRow in dTable.Rows)
    {
     TT_3(int.Parse(dtRow["RESOURCE_PARENT"].ToString()));
    }
   }
   catch
   {throw;
   }
  }
  public void TT_3(int id) //递归操作,读取父节点的信息,若TEMP表中无记录则添加到TEMP表
  {
   DataSet ds1=new DataSet();
   DataSet ds2=new DataSet();
   int t=-1;

    try
    {
     ds1=cTreeView.Temp_Get_One(id);
     if(int.Parse(ds1.Tables[0].Rows[0][0].ToString())!=0)
     {t=1;}
    }
    catch{t=-1;}
    if(t<=0)
    {
     try
     {
      ds2=cTreeView.GetUserRource_TT(id);
      
      DataRow dtRow=ds2.Tables[0].Rows[0];
      cTreeView.Temp_Add(int.Parse(dtRow["RESOURCE_ID"].ToString()),dtRow["RESOURCE_NAME"].ToString(),dtRow["RESOURCE_LINK"].ToString(),int.Parse(dtRow["RESOURCE_PARENT"].ToString()),dtRow["RESOURCE_TYPE"].ToString(),dtRow["RESOURCE_TAG"].ToString());
      int k=int.Parse(dtRow["RESOURCE_PARENT"].ToString());
      if(k!=0){
       TT_3(k);}
     }
     catch{}

    }
  }

  private void CreateTree(TreeNode pNode,string filter)
  {

   DataSet ds1 = new DataSet();
   ds1 = cTreeView.Temp_Get();
   string temp;
   DataView dv = new DataView();
   dv = ds1.Tables[0].DefaultView;


   dv.RowFilter = "RESOURCE_PARENT='"+filter+"'";

   foreach(DataRowView Row in  dv)
   {
    TreeNode Node = new TreeNode();
   
    if(pNode == null)
    {    //添加根节点
     Node.ID = Row["RESOURCE_ID"].ToString();
     Node.Text = Row["RESOURCE_NAME"].ToString();
     if( Row["RESOURCE_TYPE"].ToString().ToUpper()=="CUSTOM")
     {
      Node.ImageUrl="../images/file.png";
      Node.ExpandedImageUrl="../images/file.png";
     }
     TreeView1.Nodes.Add(Node);
     //Node.CheckBox = true;
     CreateTree(Node,Row["RESOURCE_ID"].ToString());    //再次递归
    }
    else
    {   //添加当前节点的子节点
     Node.ID = Row["RESOURCE_ID"].ToString();
     Node.Text = Row["RESOURCE_NAME"].ToString();
     if( Row["RESOURCE_TYPE"].ToString().ToUpper()=="CUSTOM")
     {
      Node.ImageUrl="../images/file.png";
      Node.ExpandedImageUrl="../images/file.png";
    }
     pNode.Nodes.Add(Node);
     //Node.CheckBox = true;
     CreateTree(Node,Row["RESOURCE_ID"].ToString());     //再次递归
    }
    
    temp=Row["RESOURCE_LINK"].ToString()+"?ID="+Row["RESOURCE_ID"].ToString()+"&ParentID="+Row["RESOURCE_PARENT"].ToString()+"&Type="+Row["RESOURCE_TYPE"].ToString();
    Node.Target = "main";
    Node.NavigateUrl = ""+temp;
   }
   
  }


  #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
 }
}
 

Java无限级树(递归)超实用

Java无限级树(递归)超实用
  • u010407050
  • u010407050
  • 2015年07月28日 17:02
  • 3505

简单无限级树 HTML代码

@ Page language="c#" %>@ Import namespace="System.Data" %>@ Import namespace="System.Data.OleDb" %>@...
  • ericfine
  • ericfine
  • 2004年08月17日 17:55
  • 1412

无限级目录树数据结构前端实现

无限级目录树数据结构的前端实现
  • qq_22555107
  • qq_22555107
  • 2017年11月14日 13:40
  • 358

基于jsTree的无限级树JSON数据的转换

jstree 主页 : http://www.jstree.com/ 其中提供了一种从后台取数据渲染成树的形式: $("#mytree").tree({ data : { ...
  • supercrsky
  • supercrsky
  • 2013年01月30日 11:56
  • 94648

无限级目录树--前台页面

----------------index.php----------------------------------menu_front1.js在前一个帖子上------------var judg...
  • dep_boy
  • dep_boy
  • 2006年10月31日 22:25
  • 710

SQL无限级查询,With 递归

在网上找了个SQL无限级查询,以树形显示的查询 ,没找到,自己写了一个,想到也有别的兄弟也可能遇到,拿出看看希望有所帮助 下面两种  第一种:一般类型网上很多 代码: with T as (...
  • QQ282030166
  • QQ282030166
  • 2013年01月15日 15:21
  • 1316

CSS实现无限级菜单

css菜单演示#{margin:0;padding:0;border:0;}/*要定义margin属性为0px;否则下拉会居中*/body { font-family: arial, 宋体, seri...
  • adverse
  • adverse
  • 2007年05月15日 20:33
  • 1495

利用TreeView控件动态生成无限级树

利用TreeView控件动态生成无限级树 项目需要,有一个树形菜单需要动态生成,联想到TreeView控件,决定用TreeView来实现首先注意到了TreeView控件有一个属性TreeNodeSrc...
  • loveangela
  • loveangela
  • 2006年08月09日 11:37
  • 854

使用Jquery+bootstrap无限级菜单树

无限级菜单树的实现效果从数据库提取出来的原始数据前台代码需要的数据{ "code": 100, "extend": { "children": [ ...
  • EnTaroAdunZ
  • EnTaroAdunZ
  • 2017年08月10日 00:43
  • 1169

穿线树实现无限级分类

分类,分组在Web应用中到处可见,理想的原型设计,总是会遇到各种各样的新的更新需求,而来自客户的需求变更(客户简单的一句加一个下级分类),可能导致的是项目重大重构。为什么我们不从一开始就把分类做成树形...
  • Joph_csu
  • Joph_csu
  • 2017年01月07日 21:39
  • 758
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#2003.NET 树的无限级实现
举报原因:
原因补充:

(最多只允许输入30个字)