GoJS 绘图 (七) :表面板(tablePanel)

逻辑星轨
• 阅读 4051

表板中的每个对象被放入由的值索引的GraphObject.row和GraphObject.column。面板会看行和列的所有在面板中的对象,以确定该表应多少行和列。

diagram.add(g(
    go.Part,
    go.Panel.Table,
    g(
        go.TextBlock,
        {
            text: '一行一列',
            row: 0,
            column: 0,
            margin: 2,
            background: '#493'
        }
    ),
    g(
        go.TextBlock,
        {
            text: '一行二列',
            row: 0,
            column: 1,
            margin: 2,
            background: '#493'
        }
    ),
    g(
        go.TextBlock,
        {
            text: '二行一列',
            row: 1,
            column: 0,
            margin: 2,
            background: '#493'
        }
    ),
    g(
        go.TextBlock,
        {
            text: '二行三列',
            row: 1,
            column: 2,
            margin: 2,
            background: '#493'
        }
    )
));

请注意,并非表中的每一个“列”需要有一个GraphObject存在。
如果在一个“列”中有多个对象,他们可能会彼此重叠。

diagram.add(g(
    go.Part,
    'Table',
    {
        background: '#ddd'
    },
    g(
        go.TextBlock,
        {
            text: '这里的文字会重叠',
            row: 0,
            column: 0
        }
    ),
    g(
        go.TextBlock,
        {
            text: '叠重会字文的里这',
            row: 0,
            column: 0
        }
    )
));

排列和对齐

一个面板中GraphObject的大小由许多因素决定的。GraphObject.stretch属性指定的宽度和/或高度是否应该承担全部由面板给它的空间。当的宽度和高度不拉伸以填充在给定的空间,GraphObject.alignment其中如果它比可用空间小的对象放置属性控制。一个也可拉伸宽度,同时竖直对准。

在行对齐

diagram.add(g(
    go.Part,
    g(
        go.Panel,
        'Table',
        {
            defaultAlignment: go.Spot.Left
        },
        g(
            go.RowColumnDefinition,
            {
                column: 0,
                width: 200
            }
        ),
        g(
            go.RowColumnDefinition,
            {
                column:1,
                width: 15,
            }
        ),
        g(
            go.Panel,
            'Auto',
            {
                row: 0,
                column: 0,
                alignment: go.Spot.Left
            },
            g(
                go.Shape,
                'RoundedRectangle',
                {
                    fill: '#493'
                }
            ),
            g(
                go.TextBlock,
                'auot panel'
            )
        ),
        g(
            go.TextBlock,
            {
                text: 'alignment: left',
                row: 0,
                column:2
            }
        ),
        g(
            go.Panel,
            'Auto',
            {
                row: 1,
                column: 0,
                alignment: go.Spot.Center
            },
            g(
                go.Shape,
                'RoundedRectangle',
                {
                    fill: '#493'
                }
            ),
            g(
                go.TextBlock,
                'auto panel'
            )
        ),
        g(
            go.TextBlock,
            {
                text: 'alignment: center',
                row:1,
                column: 2
            }
        ),
        g(
            go.Panel,
            'Auto',
            {
                row:2,
                column: 0,
                alignment: go.Spot.Right
            },
            g(
                go.Shape,
                'RoundedRectangle',
                {
                    fill: '#493'
                }
            ),
            g(
                go.TextBlock,
                'auto panel'
            )
        ),
        g(
            go.TextBlock,
            {
                text: 'alignment: right',
                row: 2,
                column: 2
            }
        )
    )
));

在列对齐

和行对齐一样,这里不重复写了。

跨越行或列

下面是一个包括跨列和行跨越一个例子。

diagram.add(g(
    go.Part,
    g(
        go.Panel,
        'Table',
        g(
            go.TextBlock,
            {
                text: '顶标题',
                row: 0,
                column: 0,
                columnSpan: 3,
                stretch: go.GraphObject.Horizontal,
                margin: 2,
                background: '#394'
            }
        ),
        g(
            go.TextBlock,
            {
                text: '侧标题',
                row: 1,
                column: 0,
                rowSpan:2,
                margin: 2,
                stretch: go.GraphObject.Vertical,
                background: '#394'
            }
        ),
        g(
            go.TextBlock,
            {
                text: '一行一列',
                row: 1,
                column: 1,
                margin: 2,
                background: '#394'
            }
        ),
        g(
            go.TextBlock,
            {
                text: '一行两列',
                row: 1,
                column: 2,
                margin: 2,
                background: '#394'
            }
        ),
        g(
            go.TextBlock,
            {
                text: '二行一列',
                row: 2,
                column: 1,
                margin: 2,
                background: '#394'
            }
        ),
        g(
            go.TextBlock,
            {
                text: '二行三列',
                row: 2,
                column: 3,
                margin: 2,
                background: '#394'
            }
        ),
        g(
            go.TextBlock,
            {
                text: '结尾',
                row: 3,
                column: 2,
                columnSpan: 2,
                margin: 2,
                background: '#394'
            }
        )
    )
));
点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
sqlserver2005创建唯一约束的方法
对于一个表中非主键列的指定列,唯一(UNIQUE约束|:强制非主键上的实体完整性的约束。UNIQUE约束确保未输入重复值,并创建一个索引以增强性能。)约束确保不会输入重复的值。例如,在employee表中emp\_id列是主键,可以定义一个唯一约束来要求表中社会安全号码(ssn)列的项是唯一的。在数据库关系图中,可以使用"索引/键"属性页创建、
Easter79 Easter79
3年前
sql子查询
子查询可以返回各种不同类型的信息标量子查询返回一个值;(最严格的,适用范围也最大)列子查询返回一个由一个值或多个值构成的列;行子查询返回一个由一个值或多个值构成的行;表子查询返回一个由一个行或多个行构成的表,而行则由一个或多个列构成。带关
Wesley13 Wesley13
3年前
MySQL中Innodb的聚簇索引和非聚簇索引
聚簇索引数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引(又叫二级索引)两种。Innodb的聚簇索引在同一个BTree中保存了索引列和具体的数据,在聚簇索引中,实际的数据保存在叶子页中,中间的节点页保存指向下一层页面的指针。“聚簇”的意思是数据行被按照一定顺序一个个紧密地排列在一起存储。一个表只能有一个聚簇索引,因为在一个表中数据的
Wesley13 Wesley13
3年前
95%的人都不知道 MySQL还有索引管理与执行计划
1.1索引的介绍  索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。  索引的一个主要目的就是加快检索表中数据的方法,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。!fi
Wesley13 Wesley13
3年前
GoJS创建分级面板(一)
在“刻度”面板,Panel.Graduated,平定期刻度/文字标签沿主子图的行程形状。刻度面板可以视为显示一系列值的比例尺。有关刻度面板的示例,请参见时间线,温度计,仪表规和标尺图示例。简单的分级面板类似于自动面板和现场面板,渐变面板中应包含两个或多个元素。元素必须是Shape或TextBlock。可以通过将GraphObject.
Easter79 Easter79
3年前
SQL JOIN语法,以及JOIN where 和and区别,还有where和join效率问题。
语法join用于根据两个或多个表中的列之间的关系,从这些表中查询数据。Join和Key有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行join。数据库中的表可通过键将彼此联系起来。主键(PrimaryKey)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这
Wesley13 Wesley13
3年前
MySQL表的操作01
表在数据库中主要用来实现存储数据记录,其基本操作包括创建表、查看表、删除表和修改表。表中的数据库对象包括:1.列(COLUMNS):也称属性列,在具体创建表时,必须指定列的名字和它的数据类型。2.索引(INDEXES):根据指定的数据库建立起来的顺序,提供了快速访问数据的途径。3.触发器(TRIGGERS):指用户定义的事务命令集合,当对一个
Wesley13 Wesley13
3年前
mysql——索引——概念
一、索引索引由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度。索引是创建在表上面的,是对数据表中一列或者多列的值进行排序的一种结构。通过索引,查询数据时可以不必读完记录的所有信息,而只是查询索引列。索引优点:提高检
Stella981 Stella981
3年前
SQL JOIN语法,以及JOIN where 和and区别,还有where和join效率问题。
语法join用于根据两个或多个表中的列之间的关系,从这些表中查询数据。Join和Key有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行join。数据库中的表可通过键将彼此联系起来。主键(PrimaryKey)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这
Wesley13 Wesley13
3年前
MySQL学习笔记4——DQL
DQL(数据查询语言)一、基本查询1.字段(列)控制1)查询所有列SELECT\FROM表名;\"\"表示查询所有列2)查询指定列SELECT列1\,列2,...,列n\FROM表名;3)让完全重复的记录只显示一次当查询结果中的多行记录一模一样时,只显示一行。一般查询所有列时
小万哥 小万哥
1年前
SQL INSERT INTO 语句详解:插入新记录、多行插入和自增字段
SQLINSERTINTO语句用于在表中插入新记录。INSERTINTO语法可以以两种方式编写INSERTINTO语句:1.指定要插入的列名和值:sqlINSERTINTO表名(列1,列2,列3,...)VALUES(值1,值2,值3,...);2.如果要