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

asp.net(C#)html无限分类树 可新增 删除 修改

商品分类 using System; using System...

.net实现无限树的例子

  • 2009年01月08日 00:32
  • 11KB
  • 下载

无限级分类Asp.net Mvc实现

无限级分类Asp.net Mvc实现   无限级分类涉及到异步加载子类、加载当前类和匹配问题,现在做一个通用的实现。   (一) 效果如下:   (二)设计、实现及使用 (1)数据库...

asp.net 实现无限级分类

数据表: 表名:Tb_Column 表结构(所有字段非空): Column_ID int 主键(注:非标识) Column_Name nvarchar(50)分类名称 Parent_...

IE8 /IE9 VS2003 C# ASP.NET c++ 断点 不能 无法调试 断点失效

解决:(原文) IE 8 has a feature called Loosely-Coupled Internet Explorer (LCIE) which results in IE run...

C# WinForm TreeView 动态生成 无限级树 Log4net SQLite

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D...
  • e_wsq
  • e_wsq
  • 2012年02月26日 16:42
  • 1178

asp.net无限级分类 TreeView

  • 2008年04月12日 22:43
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#2003.NET 树的无限级实现
举报原因:
原因补充:

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