数据访问层: 在AreaServer类里 /// <summary> /// 获取全部区域的部分字段 /// </summary> /// <returns></returns> public static List<Area> GetPartialFieldAllArea() { string sqlSelect = "SELECT [ID],[AreaName] FROM [Area]"; List<Area> list = new List<Area>(); using (SqlDataReader sdr=DBHelper.GetReader(sqlSelect,CommandType.Text,null)) { while (sdr.Read()) { Area area = new Area(); area.ID = (long)sdr["ID"]; area.AreaName = sdr["AreaName"].ToString(); list.Add(area); } } return list; } 在MonitorySite类里 /// <summary> /// 根据区域获取全部监控点的部分字段 /// </summary> /// <param name="subrangeId"></param> /// <returns></returns> public static List<MonitorySite> GetPartialFieldAllMonitorySite(int subrangeId) { string sqlSelect = "SELECT[ID],[SiteName] FROM [MonitorySite] WHERE [SubrangeID]="+subrangeId; List<MonitorySite> list = new List<MonitorySite>(); using (SqlDataReader sdr=DBHelper.GetReader(sqlSelect,CommandType.Text,null)) { while (sdr.Read()) { MonitorySite monitorysite = new MonitorySite(); monitorysite.SiteName = sdr["SiteName"].ToString(); monitorysite.ID = (long)sdr["ID"]; list.Add(monitorysite); } } return list; } 业务逻辑层: 在AreaManager类里 /// <summary> /// 获取全部区域的部分字段 /// </summary> /// <returns></returns> public static List<Area> GetPartialFieldAllArea() { return AreaServer.GetPartialFieldAllArea(); } 在MonitorySiteManger类里 /// <summary> /// 根据区域外键获取区域的部分字段 /// </summary> /// <param name="subrangeId"></param> /// <returns></returns> public static List<MonitorySite> GetPartialFieldAllMonitorySite(int subrangeId) { return MonitorySiteServer.GetPartialFieldAllMonitorySite(subrangeId); } 界面的后台代码: TreeView命名为tvSite. using System.Collections.Generic; using RTM.Model; using RTM.BLL; /// <summary> /// 绑定TreeView /// </summary> public void BindTreeView() { tvSite.Nodes.Clear(); int rootId = 0; string rootName = "所有区域"; TreeNode root = CreateTreeNode(rootId, rootName); List<Area> areas = AreaManager.GetPartialFieldAllArea(); foreach (Area area in areas) { int nodeId = (int)area.ID; string nodeName = area.AreaName.ToString(); TreeNode treeNode = this.CreateTreeNode(nodeId, nodeName); List<MonitorySite> monitorySites = MonitoryManager.GetPartialFieldAllMonitorySite(nodeId); foreach (MonitorySite site in monitorySites) { int chileNodeId = (int)site.ID; string childNodeName = site.SiteName.ToString(); TreeNode treeNodeChild = this.CreateTreeNode(chileNodeId, childNodeName); treeNode.ChildNodes.Add(treeNodeChild); } root.ChildNodes.Add(treeNode); } tvSite.Nodes.Add(root); } /// <summary> /// 创建TreeNode节点 /// </summary> /// <param name="nodeId"></param> /// <param name="nodeName"></param> /// <returns></returns> private TreeNode CreateTreeNode(int nodeId,string nodeName) { TreeNode treeNode = new TreeNode(); treeNode.Text = nodeName; treeNode.Value = nodeId.ToString(); return treeNode; }