<%@ Page language="c#" Codebehind="WebFORM1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication5.WebFORM1" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
<HTML> 
<HEAD> 
<title>WebFORM1</title> 
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0"> 
<meta name="CODE_LANGUAGE" Content="C#"> 
<meta name="vs_defaultClientScript" content="javascript"> 
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> 
</HEAD> 
<body MS_POSITIONING="GridLayout"> 
<FORM id="FORM1" method="post" runat="server"> 
</FORM> 
<FONT face="宋体"></FONT><iframe width="100%" height="100" id="hiddenframe"></iframe> 
<script> 
function ExpandNode(ParentNode,ParentId){ 
var NodeX = eval(ParentNode.id + '_0'); 
if (NodeX.style.display == 'none') 
  { 
   NodeX.style.display="block"; 
   if (NodeX.loaded == 'no') 
      { 
       document.frames['hiddenframe'].location.replace("http://localhost/webservice/WebApplication5/WebFORM2.aspx?PID=" + ParentId + "&PNode=" + ParentNode.id); 
       NodeX.loaded = 'yes'; 
     } 
  } 
else 
  { 
   NodeX.style.display='none'; 
  } 

</script> 
<CENTER> 
<TABLE border="1" width="20%" height="60%"> 
<TR> 
<TD> 
<DIV style="OVERFLOW: auto;WIDTH: 100%;HEIGHT: 100%"> 
<TABLE width="300%"> <TR> 
<TD> 
<% 
System.Data.OleDb.OleDbConnection oleDbConnection1 = new System.Data.OleDb.OleDbConnection(); 
oleDbConnection1.ConnectionString =@"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data Source=TRIATON\PSQL2KE"; 
oleDbConnection1.ConnectionString =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("/dvbbs") + @"\Tree.mdb;Persist Security Info=False"; 
oleDbConnection1.Open(); 
System.Data.OleDb.OleDbCommand OleDbCommand1 = new System.Data.OleDb.OleDbCommand("select *,(select count(*) from tree where parentid = T.id) as children from tree T where rootid = id",oleDbConnection1) ; 
System.Data.OleDb.OleDbDataReader OleDbDataReader1 = OleDbCommand1.ExecuteReader(); 
int i = 0; 
while (OleDbDataReader1.Read()) 

 %><div id='Node_<% = i %>'><a href='#' 
  
 <%if (System.Convert.ToInt64(OleDbDataReader1["children"])>0) {%> 
      onClick='ExpandNode(Node_<% = i %>,<% =OleDbDataReader1["id"] %>)'>+</a> 
             <%;} 
             else {%> 
                 >-</a><% ;}%> 
                <a href='#' 
            <%if (System.Convert.ToInt64(OleDbDataReader1["children"])>0) 
                 {%> 
                     onDblClick='ExpandNode(Node_<% = i %>,<% =OleDbDataReader1["children"]%>)' 
                 <%}  %>   
                 > 
                 <% =OleDbDataReader1["children"]%></a> 
</div> 
<div id='Node_<% = i %>_0' style='display: none' loaded='no'> 
       正在加载 ... 
    </div>                 
          <% 
i++; 
} %> 
</TD> 
</TD> 
</TR> 
</TABLE> 
</DIV></TD></TR></TABLE> 
</CENTER> 
</body> 
</HTML>  

解决方案 »

  1.   

    <%@ Page language="c#" Codebehind="WebFORM2.aspx.cs" AutoEventWireup="false" Inherits="WebApplication5.WebFORM2" %> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
    <HTML> 
    <HEAD> 
    <title>WebFORM2</title> 
    <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0"> 
    <meta name="CODE_LANGUAGE" Content="C#"> 
    <meta name="vs_defaultClientScript" content="javascript"> 
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> 
    </HEAD> 
    <body MS_POSITIONING="GridLayout"> 
    <FORM id="WebFORM2" method="post" runat="server"> 
    <FONT face="宋体"></FONT> 
    </FORM> 
    <% 
    string ParentNode; 
    ParentNode = Request.QueryString["pnode"]; 
    //Response.Write(ParentNode.Replace("_","")); 
    int i; 
    int j; 
    string nSpace=""; 
    j= ParentNode.Length - ParentNode.Replace("_","").Length; 
    for (i=0;i<j;i++) 
        nSpace = nSpace + "    "; 
    string sHTML =""; 
    i=0; 
           System.Data.OleDb.OleDbConnection oleDbConnection1 = new System.Data.OleDb.OleDbConnection(); 
    oleDbConnection1.ConnectionString =@"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data Source=TRIATON\PSQL2KE"; 
    oleDbConnection1.ConnectionString =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("/dvbbs") + @"\Tree.mdb;Persist Security Info=False"; 
    oleDbConnection1.Open(); 
    System.Data.OleDb.OleDbCommand OleDbCommand1 = new System.Data.OleDb.OleDbCommand("select *,(select count(*) from tree where parentid =T.id ) as Children from tree T where parentid = " + Request.QueryString["PID"],oleDbConnection1) ; 
    System.Data.OleDb.OleDbDataReader OleDbDataReader1 = OleDbCommand1.ExecuteReader(); 
    while (OleDbDataReader1.Read()) 

        sHTML = sHTML + "<div id='" + ParentNode + "_" + (i + 1).ToString() + "'>" + nSpace + "<a href='#'"; 
        if (System.Convert.ToInt64(OleDbDataReader1["children"])>0) 
                   sHTML = sHTML + " onClick='ExpandNode(" + ParentNode + "_" + (i + 1).ToString() + "," + OleDbDataReader1["id"] + ")'>+"; 
                else 
                   sHTML = sHTML + ">-"; 
                sHTML = sHTML + "</a>\\n" + "<a href='#'"; 
               if (System.Convert.ToInt64(OleDbDataReader1["children"])>0) 
                  sHTML = sHTML + " onDblClick='ExpandNode(" + ParentNode + "_" + (i + 1).ToString() + "," + OleDbDataReader1["id"] + ")'"; 
               sHTML = sHTML + ">" + OleDbDataReader1["id"] + ": " + OleDbDataReader1["re"] + "</a></div>"; 
               if (System.Convert.ToInt64(OleDbDataReader1["children"])>0) 
                  sHTML = sHTML + "<div id='" + ParentNode + "_" + (i + 1).ToString() + "_0' style='display: none' loaded='no'>" + nSpace + "  正在加载 ...</div>"; 
                i++; 

    Response.Write(sHTML); 
    %> 
    <script> 
        var x = eval('parent.' + '<% =Request.QueryString["pnode"] + "_0"%>' ) ; 
        x.innerHTML="<% =sHTML %>"; 
    </script> 
    </body> 
    </HTML> 
      

  2.   

    我用的Microsoft.Web.UI.WebControls里面的TreeView.
    我先建立了一个TreeView控件,然后如何在WebForm1.aspx.cs中写代码呀?
      

  3.   

    我用的Microsoft.Web.UI.WebControls里面的TreeView控件。
    先建立一个TreeView,然后如何在WebForm1.aspx.cs中写代码????????
      

  4.   

    通过DataSet的递归操作TreeView生成树状图
    using Microsoft.Web.UI.WebControls;
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    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 System.Data.SqlClient;
    namespace test
    {
    public class WebForm1 : System.Web.UI.Page
    {
    protected Microsoft.Web.UI.WebControls.TreeView tv;private void Page_Load(object sender, System.EventArgs e)
    {
    if (!Page.IsPostBack)
    {bindtree(tv.Nodes,"0");}
    }
    private void bindtree(TreeNodeCollection Nds , string depid)
    {
    DataSet ds=bindds();//获取DataSet,具体代码略
    DataView dv=ds.Tables["tree"].DefaultView;
    dv.RowFilter="HiDepID="+depid;
    TreeNode tn;
    string strID;
    foreach(DataRowView dr in dv)
    {
      strID=dr["DepID"].ToString();
      if (strID!="")
      {
       tn=new TreeNode();
       tn.ID=dr["DepID"].ToString();
       tn.Text=dr["Name"].ToString();
       Nds.Add(tn);
       bindtree(Nds[Nds.Count-1].Nodes,strID);
      }
    }
    }
    }
    }

    数据库结构:
    CREATE TABLE [dbo].[tbDep] (
        [DepID] [smallint] IDENTITY (1, 1) NOT NULL ,
        [DepName] [varchar] (50) NOT NULL ,
        [HiDepID] [smallint] NULL ,
    )