用DataTable绑定TreeView的方法

本文介绍了一种使用DataTable和DataRelation来构建具有父子关系的数据结构,并通过XSLT转换为XML,最终绑定到TreeView控件的方法。具体步骤包括:从数据库读取数据到DataSet,创建数据关联确保其为嵌套型,利用XSLT对XML进行规则化处理,最后完成TreeView的绑定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 用DataTable绑定TreeView的方法:
  1. 从数据库读取含父子关系列的表并填充到DataSet里去
  2. 创建一个关白联,并为DataSet添加该关联,DataSetNested属性必需为true.
  3. 取得该DataSet的XML描述,用XSLT将XML规则化.
  4. 绑定TreeView.

 

表的内容描述如下:

表名:CATEGORIES

CategoryID

ParentCategoryID

CategoryName

2

 

1

3

 

2

4

 

3

5

2

1.1

6

2

1.2

7

2

1.3

8

3

2.1

9

3

2.2

10

4

3.1

11

5

1.1.1

12

5

1.1.2

13

10

3.1.1

14

13

3.1.1.1

15

14

3.1.1.1.1

16

14

3.1.1.1.2

17

14

3.1.1.1.3

 

填充DataSet

//Connection to database

OleDbConnection objConn
=
new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=
" + Server.MapPath("db.mdb")  + ";Persist Security Info=False"); 

//SQL query to get data from CATEGORIES table

OleDbCommand objCommand
=new OleDbCommand("SELECT * FROM CATEGORIES",objConn);

//OleDbDataAdapter

OleDbDataAdapter objDa 
=new OleDbDataAdapter(objCommand);

//DataSet

DataSet ds
=new DataSet("CATEGORIESDS");
 

//Fill DataSet

objDa.Fill(ds ,
"CATEGORIES");

 添加关联

//Create DataRelation

DataRelation drel
=new DataRelation("CATEGORIES_RECURSIVE",
ds.Tables[
"CATEGORIES"].Columns["CategoryID"],
ds.Tables[
"CATEGORIES"].Columns["ParentCategoryID"]);
 

//Make sure relation is nested

drel.Nested 
=true;

 

//Add relation to DataSet's Relations collection

ds.Relations.Add(drel);

 

XML转换

//XmlDocument to hold XML generated from DataSet

XmlDocument objDoc
=new XmlDocument();

 

//Load XML

objDoc.LoadXml(ds.GetXml());

 

//Create XslTransform object

XslTransform objXSL
=new XslTransform();

 

//Load XSLT stylesheet

objXSL.Load(Server.MapPath(
"transformationtemplate.xslt"));

 

//StringWriter to temporarily hold result of the transformation

StringWriter writer
=new StringWriter();

 

//Apply transformation with no arguments and dump results to StringWriter.

objXSL.Transform(objDoc.CreateNavigator(),
null,writer);

 

绑定TreeView

//Set TreeView's TreeNodeSrc property to get XML from StringWriter.

TreeView1.TreeNodeSrc 
=writer.ToString();

 

//Bind TreeView

TreeView1.DataBind();

 

//Close StringWriter

writer.Close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值