制作一颗菜单树

来源:互联网 发布:vb中变量名的命名规则 编辑:程序博客网 时间:2024/06/10 01:44

  从三个表中取得数据,生成一颗菜单树:

  树的根是一个城市名称,它的子节点是这个城市的各个行政区,行政区的子节点为该行政区中的机构,机构的子节点为改机构中的工作人员 。了解了这颗树的结构后,脑海里已经浮现出这颗树的样式了吧 

  简单描述一下表:

  行政区 ( 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 += "&nbsp;&nbsp;|<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 += "&nbsp;&nbsp;|&nbsp;&nbsp;|<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 += "&nbsp;&nbsp;|&nbsp;&nbsp;|&nbsp;&nbsp;|" + 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
 }
}