C#的treeview的应用

 好久没有用C#的服务器控件了,用了很久的EXT觉得做出的Tree很好看,所以对XML熟悉了不少,最近看了一本C#中有TreeView这个控件,觉得也不错,所以用XML数据方法动态加加载了几个树,如用户树,部门树,觉得也还可以,比较方便.

首先我们要把datatable中的数据库转成XML
  1. public void SaveDeptXmlCache()
  2.     {
  3.         DataTable x1DataSource = YYsoft.FsydEbss.Global.Tree.Instance.GetDept().Tables[0];
  4.        
  5.         //DataTable x1DataSource = GetDept().Tables[0];
  6.         string xml = GetDeptTree(x1DataSource, "0""""/r/n", 0);
  7.         //FileHelp.SaveText("<?xml version=/"1.0/" encoding=/"utf-8/"?>" + xml, false, WebConfig.Instance.ConfigPath + String.Format(@"/datasource/DeptTree.All.xml"));
  8.         YYsoft.FsydEbss2008.Common.FileHelp.SaveText("<?xml version=/"1.0/" encoding=/"gb2312/"?>" + xml, false, YYsoft.FsydEbss2008.Common.WebConfig.Instance.ConfigPath + String.Format(@"/Test/TestDept.xml"));
  9.     }
  10.     private string GetDeptTree(DataTable x1DataSource, string NodeId, string NodeName, string ExpandedNode,int a)
  11.     {
  12.         ExpandedNode += "/t";
  13.         string node = String.Empty;
  14.         DataRow[] dr = x1DataSource.Select(String.Format("User_Dept_Parent = {0}", NodeId));
  15.         for (int i = 0; i < dr.Length; i++)
  16.         {
  17.             string x0 = dr[i]["User_Dept_ID"].ToString();
  18.             string x1 = dr[i]["User_Dept_Name"].ToString();
  19.             int k = a + 1;
  20.             string x2 = GetDeptTree(x1DataSource, x0, x1, ExpandedNode, k);
  21.             string x3 = dr[i]["OrderID"].ToString();//子节点数据
  22.             string x4 = dr[i]["User_Dept_Parent"].ToString();//子节点数据        
  23.             string node11 = "node" + a.ToString();
  24.             node += String.Format(ExpandedNode + "<" + node11 + " id=/"{0}/" name=/"{1}/" parent=/"{4}/" order=/"{3}/">{2}" + (x2 == String.Empty ? String.Empty : ExpandedNode) + "</" + node11 + ">", x0, x1, x2, x3, x4);
  25.         }
  26.         return node;
  27.     }

 

我们可以得到以下XML树

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <node0 id="583" name="aaaa" parent="0" order=",583|,aaaa">
  3.   <node1 id="101" name="bbb" parent="583" order=",583,">
  4.    <node2 id="102" name="ccc" parent="101" order=",583,"></node2>
  5.    <node2 id="151" name="ddd" parent="101" order=",583,"></node2>
  6.    <node2 id="370" name="eee" parent="101" order=",583,"></node2>
  7.   </node1>
  8.   <node1 id="103" name="fff" parent="583" order=",583,">
  9.    <node2 id="104" name="ggg" parent="103" order=",583,"></node2>
  10.    <node2 id="105" name="hhh" parent="103" order=",583,"></node2>
  11.    <node2 id="106" name="jjj" parent="103" order=",583,"></node2>
  12.    <node2 id="152" name="iiii" parent="103" order=",583,103,"></node2>
  13.    <node2 id="153" name="hhh" parent="103" order=",583,"></node2>
  14.    <node2 id="371" name="adaf" parent="103" order=",583,"></node2>
  15.    <node2 id="372" name="fasdf" parent="103" order=",583,"></node2>
  16.    <node2 id="552" name="sdfsdaf" parent="103" order=",583,10"></node2>
  17.    <node2 id="553" name="aaaad" parent="103" order=",583,"></node2>
  18.    <node2 id="554" name="dsf" parent="103" order=",583,103"></node2>
  19.    <node2 id="555" name="asdf" parent="103" order=",583,103"></node2>
  20.   </node1>
  21. </node0>

后再把XML数据加载到TreeView中

  1. <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="TestDept.xml"></asp:XmlDataSource>
  2.     <asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1"></asp:TreeView>
  3.   this.TreeView1.ShowLines = true;
  4.             //以下是添加节点与数据源绑定的对应关系
  5.             TreeNodeBinding node0 = new TreeNodeBinding();
  6.             node0.DataMember = "node0";
  7.             node0.ValueField = "name";
  8.             this.TreeView1.DataBindings.Add(node0);
  9.             TreeNodeBinding node1 = new TreeNodeBinding();
  10.             node1.DataMember = "node1";
  11.             node1.ValueField = "name";
  12.             this.TreeView1.DataBindings.Add(node1);
  13.             TreeNodeBinding node2 = new TreeNodeBinding();
  14.             node2.DataMember = "node2";
  15.             node2.ValueField = "name";
  16.             this.TreeView1.DataBindings.Add(node2);
  17.             TreeNodeBinding node3 = new TreeNodeBinding();
  18.             node3.DataMember = "node3";
  19.             node3.ValueField = "name";
  20.             this.TreeView1.DataBindings.Add(node3);
  21.             TreeNodeBinding node4 = new TreeNodeBinding();
  22.             node4.DataMember = "node4";
  23.             node4.ValueField = "name";
  24.             this.TreeView1.DataBindings.Add(node4);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值