TreeView的ASP.NET实现

来源:互联网 发布:西伯利亚冻土 知乎 编辑:程序博客网 时间:2024/05/17 04:31

Tree.aspx.cs代码如下:

using Microsoft.Web.UI.WebControls;
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
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;

namespace test
{
 /// <summary>
 /// Tree 的摘要说明。
 /// </summary>
 public class Tree : System.Web.UI.Page
 {
  protected Microsoft.Web.UI.WebControls.TreeView TreeView1;

  DataSet objDataSet = new DataSet();
 
  private void Page_Load(object sender, System.EventArgs e)
  {   
   if (!this.IsPostBack)
   {
    //CreateDataSet();
    intiTree(TreeView1.Nodes, "0");   
   }
  }

  private void intiTree(TreeNodeCollection Nds , int parent_id)
  {
   DataView dv = new DataView() ;
   TreeNode tmpNd;
   int strId;
   dv.Table = objDataSet.Tables["product_code_table"];
   dv.RowFilter = "parent_id='" + parent_id + "'";   
   
   foreach(DataRowView objRow in dv)
   {
    tmpNd = new TreeNode();
    strId = (int)objRow["node_id"];
    tmpNd.ID = strId.ToString();
    tmpNd.Text = objRow["node_name"].ToString();
    tmpNd.ExpandedImageUrl = objRow["img_expanded"].ToString();
    tmpNd.ImageUrl = objRow["img_original"].ToString() ;
    tmpNd.NavigateUrl = objRow["navigate_url"].ToString();
    tmpNd.CheckBox = true;
    Nds.Add(tmpNd);
    intiTree(Nds[Nds.Count-1].Nodes, strId);              
   }          
  }

  private void CreateDataSet()
  {
   OleDbConnection dbconn = new OleDbConnection(DataBaseConfiguration.ConnectionString);
   dbconn.Open();
   OleDbCommand cmd = dbconn.CreateCommand();
   cmd.CommandText = "select * from product_code_table";
   cmd.CommandType = CommandType.Text;
   OleDbDataAdapter objAdapter = new OleDbDataAdapter(cmd.CommandText, dbconn);
   objAdapter.Fill(objDataSet, "product_code_table");
   dbconn.Close(); 
  }

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

 

treeview.aspx代码如下:

<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Page language="c#" Codebehind="Tree.aspx.cs" AutoEventWireup="false" Inherits="test.Tree" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>Tree</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
  <script language="JavaScript"> 
   function  initTree()
   {
    var tree = document.all["TreeView1"];
    //tree.attachEvent("onexpand", DoExpand); // 节点展开事件
    tree.attachEvent("onclick", DoClick); // 节点点击事件
    //tree.attachEvent("oncollapse", DoCollapse); // 节点收缩事件
   }
   
   function DoCollapse()
   {
   }
   
   function DoClick()
   {
    var currentNode = this.TreeView1.clickedNodeIndex;
    var product_code_table_id = this.TreeView1.getTreeNode(currentNode).getAttribute("ID");
    var url = "MainForm.aspx?product_code_table_id=" + product_code_table_id;
    parent.parent.parent.tabset.location = url;;
   }
   
   function DoExpand()
   {
    var temp = this.TreeView1.clickedNodeIndex;
    alert(this.TreeView1.getTreeNode(temp).getAttribute("NavigateUrl"));
    var nodes = new Array();
    nodes = this.TreeView1.getChildren();
    for(i=0;i<nodes.length;i++)
    {
     if(i!=temp)
     {
      if(i<10) nodeIndex = "0"+i;//我这只用到了四个节点的,十个以上的自已试试看吧。
      this.TreeView1.getTreeNode(nodeIndex).setAttribute('expanded','false');
     }
    }
   }
  </script>
 </HEAD>
 <body MS_POSITIONING="GridLayout" onload="initTree();">
  <form id="Form1" method="post" runat="server">
   <iewc:TreeView id="TreeView1" style="Z-INDEX: 101; LEFT: 40px; POSITION: absolute; TOP: 40px" runat="server"></iewc:TreeView>
  </form>
 </body>
</HTML>

原创粉丝点击