Diagram Database importer 를 이용하면 Database 의 전체 Hirearchy를 import 하는 것이 가능하며, Database Entity 관계 다이어그램을 쉽게 생성할 수 있다.
Nevron Diagram 은 Table 형태의 데이터 Source 로부터 트리형태와 그래프 데이터 구조로 자동으로 가져오기 기능을 제공한다.
Data import 기능은 DataTable, DataView, OleDbDataAdapter, SqlDataAdapter, OdbcDataAdapter, OleDbCommand, SqlCommand, OdbcCommand 등, 각 data Source 별로 지원한다.
data 가져오기 기능은 저장된 데이터 정보를 제어할 수 있도록 도와준다.
다음 예제는 NGraphDatasourceImporter 를 사용하는 방법을 보여주는데, 단순 Access 데이터베이스에서 데이터를 import 하여 자동으로 Graph 데이터구조로 자동 배열한다.
pages 테이블의 컬럼내용
Link 테이블의 컬럼 내용
자동으로 생성된 Diagram
C#
using
Nevron.GraphicsCore;
using
Nevron.Diagram;
using
Nevron.Diagram.Shapes;
using
Nevron.Diagram.WinForm;
using
Nevron.Diagram.Layout;
using
Nevron.Diagram.DataImport;
…
private
void
Form1_Load(
object
sender, System.EventArgs e)
{
// View 초기화 시작
DrawingView.BeginInit();
// View 에서 document 표시
DrawingView.Document = DrawingDocument;
// view 설정
DrawingView.ViewLayout = ViewLayout.Fit;
DrawingView.Grid.Visible =
false
;
DrawingView.GlobalVisibility.ShowPorts =
false
;
DrawingView.HorizontalRuler.Visible =
false
;
DrawingView.VerticalRuler.Visible =
false
;
// stylesheets 생성 - one for the vertices and one for the edges
NStyleSheet vertexStyleSheet =
new
NStyleSheet();
vertexStyleSheet.Name =
"Vertices"
;
DrawingDocument.StyleSheets.AddChild(vertexStyleSheet);
NStyleSheet edgeStyleSheet =
new
NStyleSheet();
edgeStyleSheet.Name =
"Edges"
;
edgeStyleSheet.Style.StartArrowheadStyle =
new
NArrowheadStyle(ArrowheadShape.Circle,
""
,
new
NSizeL(5, 5),
new
NColorFillStyle(Color.Gray),
new
NStrokeStyle(1, Color.Black));
edgeStyleSheet.Style.EndArrowheadStyle =
new
NArrowheadStyle(ArrowheadShape.Arrow,
""
,
new
NSizeL(5, 5),
new
NColorFillStyle(Color.Gray),
new
NStrokeStyle(1, Color.Black));
DrawingDocument.StyleSheets.AddChild(edgeStyleSheet);
// graph data source importer 설정
NGraphDataSourceImporter GraphImporter =
new
NGraphDataSourceImporter();
// set the document in the active layer of which the shapes will be imported
GraphImporter.Document = DrawingDocument;
// set the connection string, data sources and DataAdapters
// in this example we have created two OleDbDataAdapters:
// the PagesDataAdapter selects all records and columns from the Pages table of the SiteMap.mdb
// the LinksDataAdapter selects all records and columns from the Links table of the SiteMap.mdb
string
connString = @
"Data Source="
""
+ Application.StartupPath +
@
"\SiteMap.mdb"
";Provider="
"Microsoft.Jet.OLEDB.4.0"
";"
;
OleDbDataAdapter PagesDataAdapter =
new
OleDbDataAdapter(
"SELECT * FROM Pages"
, connString);
OleDbDataAdapter LinksDataAdapter =
new
OleDbDataAdapter(
"SELECT * FROM Links"
, connString);
GraphImporter.VertexDataSource = PagesDataAdapter;
GraphImporter.EdgeDataSource = LinksDataAdapter;
// vertex records are uniquely identified by their Id (in the Pages table)
// edges link the vertices with the FromPageId and ToPageId (in the Links table)
GraphImporter.VertexIdColumnName =
"Id"
;
GraphImporter.FromVertexIdColumnName =
"FromPageId"
;
GraphImporter.ToVertexIdColumnName =
"ToPageId"
;
// create vertices as rectangles shapes, with default size (60, 30)
NBasicShapesFactory shapesFactory =
new
NBasicShapesFactory();
shapesFactory.DefaultSize =
new
NSizeF(60, 30);
GraphImporter.VertexShapesFactory = shapesFactory;
GraphImporter.VertexShapesName = BasicShapes.Rectangle.ToString();
// set stylesheets to be applied to imported vertices and edges
GraphImporter.VertexStyleSheetName =
"Vertices"
;
GraphImporter.EdgeStyleSheetName =
"Edges"
;
// layered graph layout 사용
NLayeredGraphLayout layout =
new
NLayeredGraphLayout();
layout.Direction = LayoutDirection.TopToBottom;
layout.LayerAlignment = RelativeAlignment.Near;
GraphImporter.Layout = layout;
// subscribe for the vertex imported event,
// which is raised when a shape was created for a data source record
GraphImporter.VertexImported +=
new
ShapeImportedDelegate(OnVertexImported);
// 가져오기
GraphImporter.Import();
// view 초기화 끝
DrawingView.EndInit();
}
private
void
OnVertexImported(NDataSourceImporter dataSourceImporter, NShape shape, INDataRecord record)
{
// display the page title in the shape
object
text = record.GetColumnValue(
"Title"
);
if
(text ==
null
)
{
shape.Text =
"Title not specified"
;
}
else
{
shape.Text = text.ToString();
}
shape.SizeToText(
new
NMarginsF(10));
}
VB.NET
Imports
Nevron.GraphicsCore
Imports
Nevron.Diagram
Imports
Nevron.Diagram.Shapes
Imports
Nevron.Diagram.WinForm
Imports
Nevron.Diagram.Layout
Imports
Nevron.Diagram.DataImport
...
Private
Sub
Form1_Load(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
' begin view init
DrawingView.BeginInit()
' display the document in the view
DrawingView.Document = DrawingDocument
' configure the view
DrawingView.ViewLayout = ViewLayout.Fit
DrawingView.Grid.Visible =
False
DrawingView.GlobalVisibility.ShowPorts =
False
DrawingView.HorizontalRuler.Visible =
False
DrawingView.VerticalRuler.Visible =
False
' create two stylesheets - one for the vertices and one for the edges
Dim
vertexStyleSheet
As
New
NStyleSheet()
vertexStyleSheet.Name =
"Vertices"
DrawingDocument.StyleSheets.AddChild(vertexStyleSheet)
Dim
edgeStyleSheet
As
New
NStyleSheet()
edgeStyleSheet.Name =
"Edges"
edgeStyleSheet.Style.StartArrowheadStyle =
New
NArrowheadStyle(ArrowheadShape.Circle,
""
,
New
NSizeL(5, 5),
New
NColorFillStyle(Color.Gray),
New
NStrokeStyle(1, Color.Black))
edgeStyleSheet.Style.EndArrowheadStyle =
New
NArrowheadStyle(ArrowheadShape.Arrow,
""
,
New
NSizeL(5, 5),
New
NColorFillStyle(Color.Gray),
New
NStrokeStyle(1, Color.Black))
DrawingDocument.StyleSheets.AddChild(edgeStyleSheet)
' configure the graph data source importer
Dim
GraphImporter
As
New
NGraphDataSourceImporter()
' set the document in the active layer of which the shapes will be imported
GraphImporter.Document = DrawingDocument
' set the connection string, data sources and DataAdapters
' in this example we have created two OleDbDataAdapters:
' the PagesDataAdapter selects all records and columns from the Pages table of the SiteMap.mdb
' the LinksDataAdapter selects all records and columns from the Links table of the SiteMap.mdb
Dim
connString
As
String
=
"Data Source="
""
+ Application.StartupPath +
"\SiteMap.mdb"
";Provider="
"Microsoft.Jet.OLEDB.4.0"
";"
Dim
PagesDataAdapter
As
New
OleDbDataAdapter(
"SELECT * FROM Pages"
, connString)
Dim
LinksDataAdapter
As
New
OleDbDataAdapter(
"SELECT * FROM Links"
, connString)
GraphImporter.VertexDataSource = PagesDataAdapter
GraphImporter.EdgeDataSource = LinksDataAdapter
' vertex records are uniquely identified by their Id (in the Pages table)
' edges link the vertices with the FromPageId and ToPageId (in the Links table)
GraphImporter.VertexIdColumnName =
"Id"
GraphImporter.FromVertexIdColumnName =
"FromPageId"
GraphImporter.ToVertexIdColumnName =
"ToPageId"
' create vertices as rectangles shapes, with default size (60, 30)
Dim
shapesFactory
As
New
NBasicShapesFactory()
shapesFactory.DefaultSize =
New
NSizeF(60, 30)
GraphImporter.VertexShapesFactory = shapesFactory
GraphImporter.VertexShapesName = BasicShapes.Rectangle.ToString()
' set stylesheets to be applied to imported vertices and edges
GraphImporter.VertexStyleSheetName =
"Vertices"
GraphImporter.EdgeStyleSheetName =
"Edges"
' use layered graph layout
Dim
layout
As
New
NLayeredGraphLayout()
layout.Direction = LayoutDirection.TopToBottom
layout.LayerAlignment = RelativeAlignment.Near
GraphImporter.Layout = layout
' subscribe for the vertex imported event,
' which is raised when a shape was created for a data source record
AddHandler
GraphImporter.VertexImported,
AddressOf
OnVertexImported
' import
GraphImporter.Import()
' end view init
DrawingView.EndInit()
End
Sub
Private
Sub
OnVertexImported(
ByVal
dataSourceImporter
As
NDataSourceImporter,
ByVal
shape
As
NShape,
ByVal
record
As
INDataRecord)
' display the page title in the shape
Dim
text
As
Object
= record.GetColumnValue(
"Title"
)
If
text
Is
Nothing
Then
shape.Text =
"Title not specified"
Else
shape.Text = text.ToString()
End
If
shape.SizeToText(
New
NMarginsF(10))
End
Sub
Private
Sub
Form1_Load_1(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
End
Sub
위 내용은 아래 페이지를 옮겼습니다.
How to automatically create a diagram from a database?
행복한 고수되십시요.
woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형
'ETC > Nevron' 카테고리의 다른 글
[ETC-Nevron] 다이어그램 Shape 를 삭제할 때 확인을 요청 (0) | 2017.04.05 |
---|