如何使用Essential Studio for ASP.NET中的Diagram控件创建流程图

作者:控件中国网   出处:控件中国网   2016-05-26 14:19:50   阅读:2

Essential Studio for ASP.NET是一款包含了很多界面子控件的套包产品,其中里面有一款子控件是Diagram控件,利用该控件开发人员可以在Web程序中创建流程图、组织图、思维导图、楼面布置图、鱼骨图等多种常用的工作流程图,开发人员在绘制流程图时可以使用多种不同样式和形状的节点,可以为节点设置图片,多种样式的连接线,桥接等。控件还提供了多种交互功能、数据绑定、自动布局以及各种图形形状模板等很多功能。
untitled.png
这篇文章主要介绍怎么利用Diagram这款产品来创建一个Web下的流程图,具体可以参考下面的详细步凑,由于这款产品并不单独销售,开发人员如果需要测试和购买可以查看Essential Studio for ASP.NET这款控件。
 
1.首先启动Visual Studio,然后创建一个Web程序,并把下面的代码添加到页面里,这样就首先创建了一个空的没有节点的流程图
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Diagram.aspx.cs" Inherits="WebApplication2.Diagram" %>
 
<!DOCTYPE html>
<html>
<head runat="server">
    <title>Getting started for ASP.NET Diagram Control</title>
    <link href="Content/ej/web/default-theme/ej.web.all.min.css" rel="stylesheet" />
    <script src='<%= Page.ResolveClientUrl("~/Scripts/jquery-2.1.4.min.js")%>' type="text/javascript"></script>
    <script src='<%= Page.ResolveClientUrl("~/Scripts/jquery.easing-1.3.min.js")%>' type="text/javascript"></script>
    <script src='<%= Page.ResolveClientUrl("~/Scripts/jquery.globalize.min.js")%>' type="text/javascript"></script>
    <script src='<%= Page.ResolveClientUrl("~/Scripts/jsrender.min.js")%>' type="text/javascript"></script>
    <script src='<%= Page.ResolveClientUrl("~/Scripts/ej/ej.web.all.min.js")%>' type="text/javascript"></script>
    <script src='<%= Page.ResolveClientUrl("~/Scripts/ej/ej.webform.min.js")%>' type="text/javascript"></script>
</head>
<body>
    <form runat="server">
        <ej:Diagram runat="server" ClientIDMode="Static" ID="DiagramWebControl" Width="100%" Height="600px"></ej:Diagram>
    </form>
</body>
</html>
getting-started_img1.png
2.使用代码为空的流程图里添加节点
DiagramWebControl.Nodes.Add(CreateNode("Start", 140, 50, 300, 50, FlowShapes.Terminator, "Start"));
       DiagramWebControl.Nodes.Add(CreateNode("Init", 140, 50, 300, 140, FlowShapes.Process, "var i = 0;"));      
       
       //Helper method
       FlowShape CreateNode(string name, int width, int height, int offsetX, int offsetY, FlowShapes shape, string text)
       {
           FlowShape node = new FlowShape()
           {
               Shape = shape,
               Name = name,
               Width = width,
               Height = height,
               OffsetX = offsetX,
               OffsetY = offsetY,
               Labels = new Collection() { new Label() { Text = text } }
           };
           return node;
       }
3.为上面创建的两个节点添加连接线
//Add a connector to `Connectors` collection of diagram model
    DiagramWebControl.Connectors.Add(ConnectNodes("connector1", "Start", "Init"));
    
    //Helper method
    Connector ConnectNodes(string name, string source, string target)
    {
        return new Connector()
        {
            Name = name,
            SourceNode = source,
            TargetNode = target,
            Segments = new Collection() { 
                new Segment(Segments.Orthogonal)
            }
        };
    }
getting-started_img3.png
4.通过前面三个步奏就创建出了一个简单的流程图,如果要创建完整的流程图,可以参考下面的代码:
DiagramWebControl.Model.DefaultSettings.Node = new Node()
    {
        Type = Shapes.Flow,
        Width = 140,
        Height = 50,
        OffsetX = 300
    };
    DiagramWebControl.Model.DefaultSettings.Connector = new Connector()
    {
        Labels = new Collection() { new Label() { FillColor = "white" } },
        Segments = new Collection() { new Segment(Segments.Orthogonal) }
    };
 
    DiagramWebControl.Nodes.Add(CreateNode("Start", 50, FlowShapes.Terminator, "Start"));
    DiagramWebControl.Nodes.Add(CreateNode("Init", 140, FlowShapes.Process, "var i = 0;"));
    DiagramWebControl.Nodes.Add(CreateNode("Condition", 230, FlowShapes.Decision, "i < 10?"));
    DiagramWebControl.Nodes.Add(CreateNode("Print", 320, FlowShapes.PreDefinedProcess, "i < 10?"));
    DiagramWebControl.Nodes.Add(CreateNode("Increment", 410, FlowShapes.Process, "i < 10?"));
    DiagramWebControl.Nodes.Add(CreateNode("End", 500, FlowShapes.Terminator, "i < 10?"));
 
    //Connect Nodes
    DiagramWebControl.Connectors.Add(ConnectNodes("connector1", "Start", "Init"));
    DiagramWebControl.Connectors.Add(ConnectNodes("connector2", "Init", "Condition"));
    DiagramWebControl.Connectors.Add(ConnectNodes("connector3", "Condition", "Print", "Yes"));
    DiagramWebControl.Connectors.Add(ConnectNodes("connector4", "Condition", "End", "No",
        new Segment() { Type = Segments.Orthogonal, Direction = "right", Length = 30 }));
    DiagramWebControl.Connectors.Add(ConnectNodes("connector5", "Print", "Increment"));
    DiagramWebControl.Connectors.Add(ConnectNodes("connector5", "Increment", "Condition", "",
      new Segment() { Type = Segments.Orthogonal, Direction = "left", Length = 30 }));
      
      
    //Helper methods      
    FlowShape CreateNode(string name, int offsetY, FlowShapes shape, string text)
    {
        FlowShape node = new FlowShape()
        {
            Shape = shape,
            Name = name,
            OffsetY = offsetY,
            Labels = new Collection() { new Label() { Text = text } }
        };
        return node;
    }
 
    Connector ConnectNodes(string name, string source, string target, string text = "", Segment segment = null)
    {
        Connector connector = new Connector()
        {
            Name = name,
            SourceNode = source,
            TargetNode = target,
            Labels = new Collection() { new Label() { Text = text } },
            Segments = new Collection() { 
            segment != null? segment: new Segment(Segments.Orthogonal)
        }
        };
        return connector;
    }
getting-started_img4.png
Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat