1. 程式人生 > 其它 >VARCHART XGantt 甘特圖如何建立和修改資料記錄

VARCHART XGantt 甘特圖如何建立和修改資料記錄

甘特圖(Xgantt)從1998年的第一個商用版本開始就致力於計劃編制和專案管理方面控制元件的研究和開發,經過20多年的積累和沉澱,目前可為軟體開發商和終端使用者提供最頂級的計劃編制和專案管理的控制元件產品,幫助使用者快速的整合專案管理軟體所需的甘特圖,網路圖,資源柱狀圖,日程日曆,資源排程等功能模組,並提供全方位的支援和服務。

VARCHART XGantt是一款功能強大的甘特圖控制元件,其模組化的設計讓您可以建立滿足需要的應用程式。XGantt可用於.NET,ActiveX和ASP.NET應用程式,可以快速、簡單地整合到您的應用程式中,幫助您識別效能瓶頸、避免延遲以及高效利用資源,使複雜資料變得更加容易理解。

VARCHART XGantt在市場上已有近30年的歷史,它提供了最完善的C#Gantt圖表控制元件,可用於構建現代而又可靠的行業資源排程應用程式。

點選下載VARCHART XGantt正式版

在定義了資料表字段後,你可以通過API向表中新增資料記錄。有兩種方式可以將資料記錄新增到你的記錄中。我們建議通常的做法是定義一個型別為物件的陣列,其元素數量與資料表字段的數量相對應。

Example Code VB.NET

Dim dataTable As VcDataTable
Dim dataRecCltn As VcDataRecordCollection
Dim dataRecVal() As Object
Dim dataRec1 As VcDataRecord
Dim dataRec2 As VcDataRecord
dataTable =
VcGantt1.DataTableCollection.DataTableByName("Maindata") dataRecCltn = dataTable.DataRecordCollection ReDim dataRecVal(dataTable.DataTableFieldCollection.Count) dataRecVal(Main_ID) = "1" dataRecVal(Main_Name) = "Node 1" dataRecVal(Main_Start) = DateSerial(2013, 1, 8) dataRecVal
(Main_Duration) = 8

Example Code C

VcDataTable dataTable =
vcGantt1.DataTableCollection.DataTableByName("Maindata");
VcDataRecordCollection dataRecCltn = dataTable.DataRecordCollection;
Object [] dataRecVal = new
object[dataTable.DataTableFieldCollection.Count];
VcDataRecord dataRec1;
VcDataRecord dataRec2;
dataRecVal[Main_ID] = "1";
dataRecVal[Main_Name] = "Node 1";
dataRecVal[Main_Start] = "08.01.2013";
dataRecVal[Main_Duration] = 8

一個數據記錄可以通過物件DataRecordCollection的方法Add()來新增,物件陣列作為引數傳遞。

示例程式碼VB.NET

dataRec1 = dataRecCltn.Add(dataRecVal)

示例程式碼 C

dataRec1 = dataRecCltn.Add(dataRecVal)

作為第二種方法,你可以使用一個由資料值組成的字串,並以分號分隔。

示例程式碼VB.NET

dataRecCltn.Add(“2;Node 2;15.01.13;;9”)

示例程式碼 C

dataRec2.AllData = “2;活動Y;15.01.13;;9”。

如果一個數據值包含一個分號,那麼這個字串必須用雙引號括起來。

示例程式碼VB.NET

dataRec2 = dataRecCltn.Add(“2;”“節點2;”;15.01.13;;9")

示例程式碼 C

dataRec2 = dataRecCltn.Add(“2;“節點2;”;15.01.13;;9”)

通過使用DataRecordByID()方法,可以通過主鍵快速找到對資料基礎物件的引用。

Example Code VB.NET
dataRec1 = dataRecCltn.DataRecordByID(“1”)
dataRec2 = dataRecCltn.DataRecordByID(“2”)

Example Code C#

dataRec1 = dataRecCltn.DataRecordByID(1);
dataRec2 = dataRecCltn.DataRecordByID(2);

通過使用索引屬性DataField(),可以很容易地修改資料記錄的單個數據欄位的內容。為了替換一條記錄的所有資料欄位內容,你可以使用AllData()這個屬性。

Example Code VB.NET

dataRec1.DataField(Main_ID) = 1
dataRec1.DataField(Main_Name) = “Activity X”
dataRec1.DataField(Main_Start) = DateSerial(2013, 1, 4)
dataRec1.DataField(Main_Duration) = 12
dataRec1.Update()
dataRec2.AllData = “2;Activity Y;18.01.13;;5”
dataRec2.Update()

Example Code C

dataRec1.set_DataField(Main_ID, 1);
dataRec1.set_DataField(Main_Name, “Activity X”);
dataRec1.set_DataField(Main_Start, “04.01.2014”);
dataRec1.set_DataField(Main_Duration, 12);
dataRec1.Update();

dataRec2.AllData = “2;Activity Y;18.01.14;;5”;
dataRec2.Update();
只有在物件DataRecord的方法Update()被呼叫後,才能顯示對記錄的修改。

使用Alldata載入值適合在設計時快速顯示所有資料值,也適合將資料記錄內容轉移到不同表的記錄中。您也可以使用這種資料格式與OLE拖放進行資訊交換。

示例程式碼VB.NET

Dim content as String
content = dataRec1.AllData & vbCr & dataRec2.AllData & vbCr &。
dataRec1.DataField(Main_Name)
MsgBox(content)

示例程式碼 C

content = dataRec1.AllData + “\r\n” + dataRec2.AllData + “\r\n” + 。
dataRec1.get_DataField(Main_Name)。
MessageBox.Show(content);
注意:為了提高資料欄位訪問的可讀性,可以定義全域性常量,這些全域性常量的名稱而不是索引號,這樣更具有描述性。下面請找到其上下文中的程式碼。

Example Code VB.NET

Const Main_ID = 0
Const Main_Name = 1
Const Main_Start = 2
Const Main_Duration = 4
'...
Dim dataRec1 As VcDataRecord
Dim dataRec2 As VcDataRecord

Dim content As String
VcGantt1.TimeScaleEnd = DateSerial(2014, 1, 1)
VcGantt1.TimeScaleStart = DateSerial(2013, 1, 1)

VcGantt1.ExtendedDataTablesEnabled = True
dataTable = VcGantt1.DataTableCollection.DataTableByName("Maindata")
dataRecCltn = dataTable.DataRecordCollection

ReDim dataRecVal(dataTable.DataTableFieldCollection.Count)

dataRecVal(Main_ID) = "1"
dataRecVal(Main_Name) = "Node 1"
dataRecVal(Main_Start) = DateSerial(2013, 1, 8)
dataRecVal(Main_Duration) = 8
dataRec1 = dataRecCltn.Add(dataRecVal)

dataRecCltn.Add("2;Node 2;15.01.13;;9")

VcGantt1.EndLoading()
'...

dataRec1 = dataRecCltn.DataRecordByID("1")
dataRec2 = dataRecCltn.DataRecordByID("2")

dataRec1.DataField(Main_ID) = 1
dataRec1.DataField(Main_Name) = "Activity X"
dataRec1.DataField(Main_Start) = DateSerial(2013, 1, 4)
dataRec1.DataField(Main_Duration) = 12
dataRec1.Update()

dataRec2.AllData = "2;Activity Y;18.01.13;;5"
dataRec2.Update()

content = dataRec1.AllData & vbCr & dataRec2.AllData & vbCr &
dataRec1.DataField(Main_Name)
MsgBox(content)
'...
dataRec2.AllData = "2;""Activity Y;Z"";18.01.13;;5"
dataRec2.Update()
content = dataRec1.AllData & vbCr & dataRec2.AllData
MsgBox(content)

Example Code C

const int Main_ID = 0;
const int Main_Name = 1;
const int Main_Start = 2;
const int Main_Duration = 4;
//...
VcDataRecord dataRec1;
VcDataRecord dataRec2;
string content;
vcGantt1.TimeScaleEnd = Convert.ToDateTime("01.01.2014");
vcGantt1.TimeScaleStart = Convert.ToDateTime("01.01.2013");

vcGantt1.ExtendedDataTablesEnabled = true;
VcDataTable dataTable =
vcGantt1.DataTableCollection.DataTableByName("Maindata");
VcDataRecordCollection dataRecCltn = dataTable.DataRecordCollection;
Object [] dataRecVal = new
object[dataTable.DataTableFieldCollection.Count];)

dataRecVal[Main_ID] = "1";
dataRecVal[Main_Name] = "Node 1";
dataRecVal[Main_Start] = "08.01.2013";
dataRecVal[Main_Duration] = 8;
dataRec1 = dataRecCltn.Add(dataRecVal);

dataRecCltn.Add("2;Node 2;15.01.13;;9");

vcGantt1.EndLoading();

//...
dataRec1 = dataRecCltn.DataRecordByID(1);
dataRec2 = dataRecCltn.DataRecordByID(2);

dataRec1.set_DataField(Main_ID, 1);
dataRec1.set_DataField(Main_Name, "Activity X");
dataRec1.set_DataField(Main_Start, "04.01.2013");
dataRec1.set_DataField(Main_Duration, 12);
dataRec1.Update();

dataRec2.AllData = "2;Activity Y;18.01.13;;5";
dataRec2.Update();

content = dataRec1.AllData + "\r\n" + dataRec2.AllData + "\r\n" +
dataRec1.get_DataField(Main_Name);
MessageBox.Show(content);
//...
dataRec2.AllData = "2;Activity Y;Z;18.01.13;;5";
dataRec2.Update();
content = dataRec1.AllData + "\r\n" + dataRec2.AllData;
MessageBox.Show(content);

將建立以下輸出:

在這裡插入圖片描述

APS幫助提升企業生產效率,真正實現生產排程視覺化呈現與控制,快速有效響應不同場景的生產計劃,提高準時交貨能力,提高產能和資源利用率
想要了解甘特圖或慧都APS系統,請登入慧都網諮詢線上客服,解決您的問題!

本文章轉載自【慧都科技】evget歡迎任何形式的轉載,但請務必註明出處、不得修改原文相關連結,尊重他人勞動成果