首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

treeview 树目录产生,该如何处理

2012-01-23 
treeview 树目录产生数据库表中有ID,ParentId,name字段通过递归函数产生树型目录谁有简练易懂的代码阿,谢

treeview 树目录产生
数据库表中有ID,ParentId,name字段
通过递归函数产生树型目录
谁有简练易懂的代码阿,谢谢!!

[解决办法]
if(!IsPostBack)
{
TreeView1.Nodes.Clear();
SqlDataReader dr=db.ExecuteSql( "select * from 数据库表 ");
while(dr.Read())
{
TreeNode newNode=new TreeNode();
newNode.Text = dr[ "ID "].ToString();
newNode.ID = dr[ "name "].ToString();
InitTree(newNode.Nodes, "0 ");
}
}
======================================

private void InitTree(TreeNodeCollection Nds,string parentId)
{
DataRow[] rows;
rows=ds.Tables[0].Select( "parentId= ' "+parentId+ " ' ");
TreeNode temNd;
foreach(DataRow row in rows)
{
temNd=new TreeNode();
temNd.ID=row[ "Id "].ToString();
temNd.Text=row[ "Name "].ToString();
Nds.Add(temNd);
InitTree(temNd.Nodes,temNd.ID);
}
}

=================
没测试 大概是这个意思 根节点为0


[解决办法]
//.net2.0 递归实现 数据库读取改成自己的即可
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;


public partial class _Default : System.Web.UI.Page
{
private string connstring = ConfigurationManager.ConnectionStrings[ "ConnStr "].ToString();

private bool isHaveCheckBox = false;
private bool isExpanded = false;
private DataTable dtTree = null;
protected void Page_Load(object sender, EventArgs e)
{
//Response.Write( "tttttttttt ");
if (!IsPostBack)
{
AreaTree.Nodes.Add(getRootAreaTreeNode(false, false));
}

}

/// <summary>
/// 获取包含全部子节点的根节点数据
/// </summary>
/// <param name= "haveCheckBox "> 节点是否产生CheckBox </param>
/// <param name= "expanded "> 节点是否展开 </param>
/// <returns> </returns>
public TreeNode getRootAreaTreeNode(bool haveCheckBox, bool expanded)
{
//drPeng.HS.BR.AreaTree brTree = new drPeng.HS.BR.AreaTree();

string rootID = "0001 ";//brTree.getRootAreaTreeID();
string rootName = "中国 ";//brTree.getRootAreaTreeName();
//ds = brTree.getAllAreaTree();

isHaveCheckBox = haveCheckBox;
isExpanded = expanded;

#region populate root node
TreeNode rootNode = new TreeNode();
rootNode.Text = rootName;
rootNode.Value = rootID;
//rootNode. = rootName;
// rootNode.NodeData = "0001 ";

rootNode.Expanded = true;
// rootNode.CheckBox = isHaveCheckBox;
#endregion

DataSet dsTree = SqlHelper.ExecuteDataset(connstring, CommandType.Text, "select * from TB_Area ");
dtTree = dsTree.Tables[0];
this.populateAreaTree(rootID, rootNode);

return rootNode;
}

private void populateAreaTree(string parentID, TreeNode pNode)
{

DataRow[] dRows = dtTree.Select( "ParentAreaCode= ' " + parentID + " ' ");

if (dRows.Length > 0)


{
TreeNode Node = null;
foreach (DataRow drow in dRows)
{
Node = new TreeNode();
Node.Text = drow[ "AreaName "].ToString();
Node.Value = drow[ "AreaCode "].ToString();
//Node.DataItem = Node.Text + "| " + Node.Value;
Node.Expanded = isExpanded;
pNode.ChildNodes.Add(Node);
populateAreaTree(Node.Value, Node); //递归
}
}
}
}
[解决办法]
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class word_admin_left : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
try
{
Class1 aa = new Class1();
string sql = "select * from tbTree ";
SqlDataAdapter adp = aa.SQLDA(sql);
DataSet ds = new DataSet();
adp.Fill(ds);
this.ViewState[ "ds "] = ds;
}
catch (Exception ex)
{
Session[ "Error "] = ex.ToString();
Response.Redirect( "error.aspx "); //?跳转程序的公共错误处理页面
}
//调用递归函数,完成树形结构的生成
if (!Page.IsPostBack)
{
AddTree(0, (TreeNode)null);
}

}

//递归添加树的节点
public void AddTree(int ParentID, TreeNode pNode)
{
DataSet ds = (DataSet)this.ViewState[ "ds "];
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[PARENTID] = " + ParentID;

foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{ //添加根节点
Node.Text = Row[ "name "].ToString();
TreeView1.Nodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row[ "id "].ToString()), Node); //再次递归
}
else
{ //?添加当前节点的子节点
Node.Text = Row[ "name "].ToString();
Node.NavigateUrl = Row[ "url "].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row[ "id "].ToString()), Node); //再次递归
}
}
}
}

热点排行