关闭

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

311人阅读 评论(0) 收藏 举报

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:496次
    • 积分:13
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档