用代码自定义数据列
一般用户可以跳过本节内容。
本节内容可以参考CaseStudy目录下的文件“甘特图自定义列(代码).Table”。
本节的任务还是在甘特图中增加两个自定义列,一个是逻辑型的“结算”列,一个是有下拉列表的“等级”列 ,不过全部用代码来实现:
如果是绑定状态,为实现上述要求,可以在窗口的AfterLoad事件列中加上了代码:
Dim
gv
As
GanttView = e.Form.Controls("GanttView1").GanttView
gv.GridWidth = 360
Dim
cln
As
New
Gantt.CustomFieldColumn()
'新建一个自定义列
cln.Name =
"Settle"
'列名
cln.Caption =
"结算"
'列标题
cln.DataType =
GetType(Boolean)
'列的数据类型
cln.Width = 50
'列宽
cln.Visible =
True
'默认显示此列
gv.Columns.Add(cln)
'将列添加到Columns集合中
cln =
New
Gantt.CustomFieldColumn()
'新建一个自定义列
cln.Name =
"Level"
'列名
cln.Caption =
"等级"
'列标题
cln.DataType =
GetType(String)
'列的数据类型
cln.Width = 80
'列宽
cln.Visible =
True
'默认显示此列
gv.Columns.Add(cln)
'将列添加到Columns集合中
gv.SetComboList("等级",
"A|B|C|D|E")
'设置下拉列表,注意第一个参数必须是列标题,不能是列名
gv.PropertyDataTable = DataTables("Properties")
'甘特图属性设置存储在Properties表中
gv.CalendarDataTable = DataTables("Calendars")
'甘特图的日历设置存储在Calendars表中
gv.ResourceDataTable = DataTables("Resources")
'甘特图的资源设置存储在Resources表中
gv.TaskDataTable = DataTables("Tasks")
'甘特图的任务数据存储在Tasks表中
gv.LoadSettings()
'从数据表中加载设置
非绑定状态
上面的代码是针对绑定状态的,对于非绑定状态(采用XML文件存储),情况会有些特殊。
因为XML文件会存储列结构,如果每次都通过代码增加两列,会导致甘特图的列不断增多。
所以我们需要通过列数判断是否已经增加了自定义列,甘特图原本的列数是14(除非用SetColumns方法改变了列数),增加两列就是16列。
所以我们可以通过判断列数是否达到16来判断是否已经增加了自定义列,AfterLoad事件代码为:
Dim
gv
As
GanttView = e.Form.Controls("GanttView1").GanttView
gv.LoadXml(ApplicationPath &
"\ganttview.samle2.xml")
If
gv.Columns.Count < 16
Then
'默认14列,加2列就是16列,如果有16列列,就不要重复增加了
Dim
cln
As
New
Gantt.CustomFieldColumn()
'新建一个自定义列
cln.Name =
"Settle"
'列名
cln.Caption =
"结算"
'列标题
cln.DataType =
GetType(Boolean)
'列的数据类型
cln.Width = 50
'列宽
cln.Visible =
True
'默认显示此列
gv.Columns.Add(cln)
'将列添加到Columns集合中
cln =
New
Gantt.CustomFieldColumn()
'新建一个自定义列
cln.Name =
"Level"
'列名
cln.Caption =
"等级"
'列标题
cln.DataType =
GetType(String)
'列的数据类型
cln.Width = 80
'列宽
cln.Visible =
True
'默认显示此列
gv.Columns.Add(cln)
'将列添加到Columns集合中
gv.SetComboList("等级",
"A|B|C|D|E")
'设置下拉列表
End
If
提示:
对于非绑定状态,你也可以直接通过修改XML文件来增加或删除列: