您的位置:首页 > 编程语言 > ASP

Asp.net 2.0 Treeview 动态填充,并实现无限级树

2013-01-04 09:58 411 查看
数据库表关键字段:

表: table1


type_id type_name per_type_id



0 根目录 -1



1 子目录
0



2 子目录2
0



3 子子目录
2




.



9 根目录二 -1



C#代码


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 tree : System.Web.UI.Page






{





protected
void Page_Load(object sender, EventArgs e)






{




TreeView1.Nodes.Clear();




DataTable dt
= tree_table();


DataView dv
= new DataView(dt);


dv.RowFilter
= "type_id = 0";





foreach (DataRowView drv
in dv)






{


TreeNode node
= new TreeNode();


node.Text
= drv["type_name"].ToString();


node.Value
= drv["type_id"].ToString();


node.NavigateUrl
= "?s="
+ drv["type_id"].ToString();


TreeView1.Nodes.Add(node);


AddChildNode(dt, node);


}






}





private DataTable tree_table()






{





//hooyesDataLink 为配置中数据连接字符串键名


SqlConnection con
= new SqlConnection(ConfigurationManager.AppSettings["hooyesDataLink"]);


SqlDataAdapter sda
= new SqlDataAdapter("select * from table1",
con);


DataTable dt
= new DataTable();


sda.Fill(dt);



return dt;


}







递归以实现无限级树#region
递归以实现无限级树



private
void AddChildNode(DataTable dt, TreeNode node)






{


DataView dv
= new DataView(dt);//建立dt的表视图


dv.RowFilter
= "per_type_id = '"
+ node.Value
+ "'";
//过滤



foreach (DataRowView drv1
in dv)






{


TreeNode ChildNode
= new TreeNode();


ChildNode.Text
= drv1["type_name"].ToString();


ChildNode.Value
= drv1["type_id"].ToString();


ChildNode.NavigateUrl
= "?s="
+ drv1["type_id"].ToString();


ChildNode.Expanded
= true;//展开属性为FALSE




node.ChildNodes.Add(ChildNode);






AddChildNode(dt, ChildNode);


}


}



#endregion






}



效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: