- 從數據庫讀取含父子關係列的表並填充到DataSet裏去
- 創建一個關白聯,併爲DataSet添加該關聯,DataSet的Nested屬性必需爲true.
- 取得該DataSet的XML描述,用XSLT將XML規則化.
- 綁定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
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");
添加關聯
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 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
TreeView1.TreeNodeSrc =writer.ToString();
//Bind TreeView
TreeView1.DataBind();
//Close StringWriter
writer.Close();