您的位置:首页 > 其它

TreeView(一次性递归所有节点)

2007-07-31 15:28 501 查看
function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}



TreeView(一次性递归所有节点)


数据库Table
==============================================

int key int nvarchar(100) nvarchar(100) nvarchar(100) nvarchar(100)
NODE_ID PARENT_ID NODE_NAME ADDRESS IMAGE_URL SELECT_IMAGE_URL
1 0 node_1 http://* *.gif *.gif
2 1 node_1_1 http://* *.gif *.gif
3 2 node_1_1_1 http://* *.gif *.gif
4 0 node_2 http://* *.gif *.gif
5 4 node_2_1 http://* *.gif *.gif
6 5 node_2_1_1 http://* *.gif *.gif
7 0 node_3 http://* *gif *.gif
8 7 node_3_1 http://* *.gif *.gif

==============================================

代码程序:

==============================================

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 Components;
using Microsoft.Web.UI.WebControls;

namespace Register
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView tvList;
private SqlControl objSqlControl;
private DataTable objDataTable;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if ( ! Page.IsPostBack )
{
objSqlControl = new SqlControl();
TreeNode node = new TreeNode();
objDataTable = objSqlControl.SelectData(); //取得所有数据得到DataTable
this.CreateTree( tvList.Nodes,"0" ); //建立节点
}
}

private void CreateTree( TreeNodeCollection node,string parent_id )
{
DataView dvList = new DataView( this.objDataTable );
dvList.RowFilter = "PARENT_ID='" + parent_id + "'"; //过滤父节点
TreeNode nodeTemp;
foreach ( DataRowView dv in dvList )
{
nodeTemp = new TreeNode();
nodeTemp.ID = dv["NODE_ID"].ToString(); //节点ID
nodeTemp.Text = dv["NODE_NAME"].ToString(); //节点名称
nodeTemp.NavigateUrl = dv["ADDRESS"].ToString(); //节点链接地址
nodeTemp.ImageUrl = dv["IMAGE"].ToString(); //节点图片(未展开)
nodeTemp.SelectedImageUrl = dv["IMAGE_EX"].ToString(); //节点图片(展开)
nodeTemp.Target = "_parent"; //节点链接Target

node.Add( nodeTemp ); //加入节点
this.CreateTree( nodeTemp.Nodes,nodeTemp.ID ); //递归
}
}

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1288602
****************************************************************************************************

protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
DataSet ds=new DataSet(); //定义一个DataSet
ConnSql connsql=new ConnSql();

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
test();
}

#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
public void test()
{
// string sql="select * from Members";
string sql="select *,l.Level_Name from members m inner join member_Level l on m.Level_ID=l.Level_ID";

ds=connsql.ExecutesqlDS(sql);

//调用递归函数,完成树形结构的生成
AddTree(0, (TreeNode)null);

}
public void AddTree(int ParentID,TreeNode pNode)
{
TreeNode tn1=new TreeNode();
DataView dvTree = new DataView(ds.Tables[0]);

//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[User_ParentID] = " + ParentID;
// dvTree.RowFilter = "[User_ParentID] = " + ParentID;

foreach(DataRowView Row in dvTree)
{
if(pNode == null)
{ //添加根节点

tn1.Text=Row["User_Account"].ToString()+'/'+Row["User_Name"].ToString()+'/'+Row["Level_Name"].ToString();
TreeView1.Nodes.Add(tn1);
tn1.Expanded=true;
AddTree(Int32.Parse(Row["User_ID"].ToString()),tn1); //再次递归
}
else
{ //添加当前节点的子节点
TreeNode tn2=new TreeNode();

tn2.Text=Row["User_Account"].ToString()+'/'+Row["User_Name"].ToString()+'/'+Row["Level_Name"].ToString();
pNode.Nodes.Add(tn2);
tn1.Expanded=true;
AddTree(Int32.Parse(Row["User_ID"].ToString()),tn2); //再次递归
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐