从三个表中取得数据,生成一颗菜单树:
树的根是一个城市名称,它的子节点是这个城市的各个行政区,行政区的子节点为该行政区中的机构,机构的子节点为改机构中的工作人员。了解了这颗树的结构后,脑海里已经浮现出这颗树的样式了吧
简单描述一下表:
行政区 ( district ) { districtCode, parentDistrictCode, districtName }
机构 (organization ) {orgCode, districtCode,orgName }
人员 ( user) {userID, orgCode, userName}
前台treeVie内容
<%@ Page language="c#" Codebehind="TreeView.aspx.cs" AutoEventWireup="false" Inherits="TreeView" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>菜单树</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<LINK href="../css/style.css" type="text/css" rel="stylesheet">
<script language="javascript">
<!--
function TurnTheDiv(divCode)
{
var _divCode = divCode;
if(document.getElementById(_divCode).style.display == "")
{
document.getElementById(_divCode).style.display = "none";
}
else
{
document.getElementById(_divCode).style.display = "";
}
}
//-->
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" >
<form id="Form1" method="post" runat="server">
<table class="bk">
<tr>
<td>
<FONT face="宋体">
<span onclick = "TurnTheDiv('wuhanshi');">城市名</span>
<div id="showTheTree" runat="server"></DIV>
</FONT>
</td>
</tr>
</table>
</form>
</body>
</HTML>
后台TreeView.aspx.cs代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace chsWebApplication.OnlineDoctor
{
/// <summary>
/// DoctorInfo 的摘要说明。
/// </summary>
public class TreeView: System.Web.UI.Page
{
protected System.Web.UI.HtmlControls.HtmlGenericControl showTheTree;
protected string strHtmlCode = "";
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.Page.IsPostBack)
{
DataTable districtDT = new DataTable();
DistrictDAO districtDao = new DistrictDAO();
using(districtDT = districtDao.GetDistirctName(System.Configuration.ConfigurationSettings.AppSettings["WuHanShi"].ToString()))
{
strHtmlCode += "<div id=wuhanshi style='display:none;'>";
foreach(DataRow districtDR in districtDT.Rows)
{
strHtmlCode += " |<span onclick = \"TurnTheDiv(\'org"+districtDR["districtCode"].ToString()+"\');\">" + districtDR["name"] + "</span><br>";
DataTable orgDT = new DataTable();
C_OrganizationDAO orgDao = new C_OrganizationDAO();
using(orgDT = orgDao.OrgOfDistrict(districtDR["districtCode"].ToString()))
{
strHtmlCode += "<div id=org"+districtDR["districtCode"].ToString()+" style='display:none;'>";
foreach(DataRow orgDR in orgDT.Rows)
{
strHtmlCode += " | |<span onclick = \"TurnTheDiv('user"+orgDR["orgcode"].ToString()+"');\">" + orgDR["name"] + "</span><br>";
DataTable userDT = new DataTable();
UserDAO userDao = new UserDAO();
using(userDT = userDao.DoctorOfOrg(orgDR["orgcode"].ToString()))
{
strHtmlCode += "<div id=user"+orgDR["orgcode"].ToString()+" style='display:none;'>";
foreach(DataRow userDR in userDT.Rows)
{
strHtmlCode += " | | |" + userDR["username"] + "<br>";
}
strHtmlCode += "</div>";
}
}
strHtmlCode += "</div>";
}
}
strHtmlCode += "</div>";
}
//输出HTML代码
showTheTree.InnerHtml = strHtmlCode;
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}