zoukankan      html  css  js  c++  java
  • ASP.NET组织结构图的画法——数据来源读取数据库

    今天整整忙了一天,终于给这个组织结构图画出来了

    第一:数据库部分:

    ID主键ID

    Name 组织结构名称

    FavID 父组织ID

    主要是这三个字段  若是没有父组织,则父组织给FavID=0

    第二:添加一个开源的dll:Whidsoft.WebControls.OrgChart.dll下载地址:点击下载控件源码

    下载后生成一个dll放到项目中就可以使用了,下面是使用方法

    第三:静态使用方法

    前台页面:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
    <%@ Register TagPrefix="oc" Namespace="Whidsoft.WebControls" Assembly="Whidsoft.WebControls.OrgChart" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <style type="text/css">
            .alink a,a:hover,a:visited{
                 color:Black;
                  text-decoration:none;
            }
        </style>
    </head>
    <body>
        <form id="Form1" method="post" runat="server">
            <div class="alink">
                <oc:orgchart id="OrgChart1" style="z-index: 101; left: 104px; position: absolute; top: 88px"
                    runat="server" LineColor="Silver" Width="100%" Height="100%" ChartStyle="Vertical" ToolTip="test"></oc:orgchart>
            </div>
        </form>
    </body>
    </html>
    protected void Page_Load(object sender, EventArgs e)
        {
            string style = Request.QueryString["style"];

                if (style == null || style == "")
                {
                    style = "1";
                }

                if (!IsPostBack)
                {
                    //每一个组织图中的节点都是一个OrgNode,各属性分别为显示名称,tips
                    OrgNode orgNode = new OrgNode();

                    orgNode.Text = "罗宝线<br/><span style=\"color:red;\">主管</span>";
                    //orgNode.Description =

                    orgNode.Description = "这是组织图的塔尖";

                    orgNode.NavigateUrl = "http://www.whidsoft.cn";

                    orgNode.UnderDesc = "累计电度:1000万度,占线路用电 100%";

                    //建立各节点
                    OrgNode OrgNode1 = new OrgNode();
                    OrgNode1.Text = "车站照明动力";
                    OrgNode1.Description = "这是";
                    OrgNode1.UnderDesc = "累计电度:55万度,占线路用电 65%";

                    OrgNode OrgNode11 = new OrgNode();
                    OrgNode11.Text = "车站1";
                    OrgNode11.Description = "这是";
                    OrgNode11.UnderDesc = "累计电度:33万度,占线路用电 13%";

                    OrgNode OrgNode12 = new OrgNode();
                    OrgNode12.Text = "车站2";
                    OrgNode12.Description = "这是";
                    OrgNode12.UnderDesc = "累计电度:133万度,占线路用电 33%";

                    OrgNode OrgNode13 = new OrgNode();
                    OrgNode13.Text = "车站3";
                    OrgNode13.Description = "这是";
                    OrgNode13.UnderDesc = "累计电度:13万度,占线路用电 33%";

                    OrgNode1.Nodes.Add(OrgNode11);
                    OrgNode1.Nodes.Add(OrgNode12);
                    OrgNode1.Nodes.Add(OrgNode13);
                    orgNode.Nodes.Add(OrgNode1);

                    OrgNode OrgNode2 = new OrgNode();
                    OrgNode2.Text = "牵引动力";
                    OrgNode2.Description = "这是";
                    OrgNode2.UnderDesc = "累计电度:13万度,占线路用电 11%";

                    OrgNode OrgNode21 = new OrgNode();
                    OrgNode21.Text = "1段牵引";
                    OrgNode21.Description = "这是";

                    OrgNode OrgNode22 = new OrgNode();
                    OrgNode22.Text = "2段牵引";
                    OrgNode22.Description = "这是";

                    OrgNode2.Nodes.Add(OrgNode21);
                    OrgNode2.Nodes.Add(OrgNode22);
                    orgNode.Nodes.Add(OrgNode2);

                    OrgNode OrgNode3 = new OrgNode();
                    OrgNode3.Text = "维修段";
                    OrgNode3.Description = "这是3";
                    OrgNode3.UnderDesc = "累计电度:345万度,占线路用电 54%";

                    OrgNode OrgNode31 = new OrgNode();
                    OrgNode31.Text = "检修";
                    OrgNode31.Description = "这是3";

                    OrgNode OrgNode32 = new OrgNode();
                    OrgNode32.Text = "洗车及污水";
                    OrgNode32.Description = "这是3";

                    OrgNode OrgNode33 = new OrgNode();
                    OrgNode33.Text = "综合办公楼";
                    OrgNode33.Description = "这是3";

                    OrgNode3.Nodes.Add(OrgNode31);
                    OrgNode3.Nodes.Add(OrgNode32);
                    OrgNode3.Nodes.Add(OrgNode33);
                    orgNode.Nodes.Add(OrgNode3);

                    OrgNode OrgNode4 = new OrgNode();
                    OrgNode4.Text = "管理中心";
                    OrgNode4.Description = "这是3";
                    OrgNode4.UnderDesc = "累计电度:234万度,占线路用电 34%";

                    OrgNode OrgNode41 = new OrgNode();
                    OrgNode41.Text = "办公";
                    OrgNode41.Description = "这是3";

                    OrgNode OrgNode42 = new OrgNode();
                    OrgNode42.Text = "商业";
                    OrgNode42.Description = "这是3";

                    OrgNode OrgNode43 = new OrgNode();
                    OrgNode43.Text = "机房";
                    OrgNode43.Description = "这是3";

                    OrgNode4.Nodes.Add(OrgNode41);
                    OrgNode4.Nodes.Add(OrgNode42);
                    OrgNode4.Nodes.Add(OrgNode43);
                    orgNode.Nodes.Add(OrgNode4);

                    OrgChart1.Node = orgNode;

                    OrgChart1.ChartStyle = (style == "1") ? Whidsoft.WebControls.Orientation.Vertical : Whidsoft.WebControls.Orientation.Horizontal;
                }
        }

    或者是动态读取数据库方式,这里前台部分不需要改动,只需要后台些方法就好,主要是一个递归的方法

    private void Bind()
        {
            string style = Request.QueryString["style"];
    
            if (style == null || style == "")
            {
                style = "1";
            }
    
            //1.数据查询
            Hashtable ht = new Hashtable();
            ht.Add("FavHROID", 0);
            IList<HROrganization> HROLst = HROrganizationService.GetInstance().FindAll(ht);
            OrgNode orgNode = new OrgNode();
            orgNode.Text = HROLst[0].Name;
            
            Hashtable ht1 = new Hashtable();
            ht1.Add("FavHROID", HROLst[0].ID);
    
            AddNode(ht1, orgNode);
            OrgChart1.Node = orgNode;
    
            OrgChart1.ChartStyle = (style == "1") ? Whidsoft.WebControls.Orientation.Vertical : Whidsoft.WebControls.Orientation.Horizontal;
            
        }
        /// <summary>
        /// 给节点赋值
        /// </summary>
        /// <param name="ht1"></param>
        /// <param name="orgNode"></param>
        private void AddNode(Hashtable ht1, OrgNode orgNode)
        {
            IList<HROrganization> HROLst2 = HROrganizationService.GetInstance().FindAll(ht1);
            foreach (HROrganization item2 in HROLst2)
            {
                OrgNode OrgNode2 = new OrgNode();
                OrgNode2.Text = item2.Name;
                orgNode.Nodes.Add(OrgNode2);
                Hashtable ht2 = new Hashtable();
                ht2.Add("FavHROID", item2.ID);
                AddNode(ht2, OrgNode2);
            }
        }

    希望对大家稍有帮助

  • 相关阅读:
    爬取B站up主相册原图
    爬MEIZITU网站上的图片
    mpvue
    修改Tomcat控制台标题
    iserver频繁崩溃、内存溢出事故解决小记
    Java反射机制详解 及 Method.invoke解释
    window下maven的环境搭建
    window下mongodb的安装和环境搭建
    centos7 安装 redis4.0.8
    centos7 安装mysql5.7.20(yum方式)
  • 原文地址:https://www.cnblogs.com/YuanShuai/p/2973751.html
Copyright © 2011-2022 走看看