根据数据源的不同,TreeView控件导航可以分为三种方式
-
绑定站点地图
1.1 创建站点地图文件:Web.sitemap
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> xml version="1.0" encoding="utf-8" ?>
< siteMap xmlns ="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
< siteMapNode url ="~/Default.aspx" title ="首页" description ="网站的首页" >
< siteMapNode url ="~/BeiJing/Default_BJ.aspx" title ="北京分公司" description ="北京分公司" >
< siteMapNode url ="~/BeiJing/CaiWu.aspx" title ="财务部" description ="财务部" />
< siteMapNode url ="~/BeiJing/Renli.aspx" title ="人力部" description ="人力部" />
< siteMapNode url ="~/BeiJing/JiShu.aspx" title ="技术部" description ="技术部" />
siteMapNode >
< siteMapNode url ="~/ShangHai/Default_SH.aspx" title ="上海分公司" description ="上海分公司" >
< siteMapNode url ="~/ShangHai/CaiWu.aspx" title ="财务部" description ="财务部" />
< siteMapNode url ="~/ShangHai/Renli.aspx" title ="人力部" description ="人力部" />
< siteMapNode url ="~/ShangHai/JiShu.aspx" title ="技术部" description ="技术部" />
siteMapNode >
< siteMapNode url ="~/ShenZhen/Default_SZ.aspx" title ="深圳分公司" description ="深圳分公司" >
< siteMapNode url ="~/ShenZhen/CaiWu.aspx" title ="财务部" description ="财务部" />
< siteMapNode url ="~/ShenZhen/Renli.aspx" title ="人力部" description ="人力部" />
< siteMapNode url ="~/ShenZhen/JiShu.aspx" title ="技术部" description ="技术部" />
siteMapNode >
siteMapNode >
siteMap >1.2 页面上拖放一个SiteMapDataSource数据源控件
1.3 设置TreeView控件的数据源为SiteMapDataSource数据源控件
-
绑定XML文件
2.1 创建XML文档:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> xml version="1.0" encoding="utf-8" ?>
< Company url ="~/Default.aspx" title ="首页" description ="网站的首页" >
< company url ="~/BeiJing/Default_BJ.aspx" title ="北京分公司" description ="北京分公司" >
< department url ="~/BeiJing/CaiWu.aspx" title ="财务部" description ="财务部" />
< department url ="~/BeiJing/Renli.aspx" title ="人力部" description ="人力部" />
< department url ="~/BeiJing/JiShu.aspx" title ="技术部" description ="技术部" />
company >
< company url ="~/ShangHai/Default_SH.aspx" title ="上海分公司" description ="上海分公司" >
< department url ="~/ShangHai/CaiWu.aspx" title ="财务部" description ="财务部" />
< department url ="~/ShangHai/Renli.aspx" title ="人力部" description ="人力部" />
< department url ="~/ShangHai/JiShu.aspx" title ="技术部" description ="技术部" />
company >
< company url ="~/ShenZhen/Default_SZ.aspx" title ="深圳分公司" description ="深圳分公司" >
< department url ="~/ShenZhen/CaiWu.aspx" title ="财务部" description ="财务部" />
< department url ="~/ShenZhen/Renli.aspx" title ="人力部" description ="人力部" />
< department url ="~/ShenZhen/JiShu.aspx" title ="技术部" description ="技术部" />
company >
Company >2.2 页面上拖放一个XmlDataSource数据源控件
2.3 设置TreeView控件的数据源为XmlDataSource数据源控件,并配置数据源控件
2.4 配置TreeView数据绑定
2.5 在节点配置中,手工绑定Xml的节点属性
-
手动绑定数据库
3.1 数据库表部分如下图所示
DistrictId:行政区划编号
DIstrictName:行政区划名称
ParentDistrictId:上级行政区划编号
DistrictLevel:行政区划级别(1=省级,2=地市级,3=区县级)
3.2 后台代码
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> protected void Page_Load( object sender, EventArgs e)
{
// 调用增加TreeView根节点的方法
AddRootNodes();
}
///
/// 增加根节点
///
private void AddRootNodes()
{
// 配置Sql查询语句和参数(行政区划级别=1/省级)
string strSQL = " SELECT * FROM [District] WHERE [DistrictLevel]=@DistrictLevel " ;
SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter( " @DistrictLevel " , 1 )
};
// 调用GetDataSet()方法得到数据集
DataSet ds = GetDataSet(strSQL, paras);
// 遍历得到的所有节点
foreach (DataRow row in ds.Tables[ 0 ].Rows)
{
// 实例化根节点,并赋值
TreeNode rootNode = new TreeNode();
rootNode.Text = row[ " DistrictName " ].ToString();
rootNode.NavigateUrl = string .Format( " ~/ShowDistrict.aspx?DistrictId={0} " , row[ " DistrictId " ].ToString());
rootNode.Value = row[ " DistrictId " ].ToString();
// 调用添加该节点的子节点的方法
AddChildNodes(rootNode);
// 添加TreeView的根节点
TreeView1_District.Nodes.Add(rootNode);
}
}
///
/// 添加子节点的方法
///
///
private void AddChildNodes(TreeNode rootNode)
{
// 配置Sql查询语句和参数
string strSQL = " SELECT * FROM [District] WHERE [ParentDistrictId]=@ParentDistrictId " ;
SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter( " @ParentDistrictId " ,rootNode.Value)
};
// 得到数据集DataSet
DataSet ds = GetDataSet(strSQL, paras);
// 遍历数据集中所有的子节点
foreach (DataRow row in ds.Tables[ 0 ].Rows)
{
// 实例化子节点并赋值
TreeNode childNode = new TreeNode();
childNode.Text = row[ " DistrictName " ].ToString();
childNode.NavigateUrl = string .Format( " ~/ShowDistrict.aspx?DistrictId={0} " , row[ " DistrictId " ].ToString());
childNode.Value = row[ " DistrictId " ].ToString();
// 迭代,添加该子节点的所有子节点
AddChildNodes(childNode);
// 将该字节点添加到根节点中
rootNode.ChildNodes.Add(childNode);
}
}
///
/// 方法返回数据集
///
///
///
///
private static DataSet GetDataSet( string strSQL, SqlParameter[] values)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings[ " DistrictDBConnectionString " ].ConnectionString;
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = strSQL;
cmd.Parameters.AddRange(values);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-539616/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12639172/viewspace-539616/