廖璐 葉小艷 施錦鎮(zhèn)
摘要:為了解決ERP系統(tǒng)中樹狀結(jié)構(gòu)數(shù)據(jù)表現(xiàn)問題,設(shè)計(jì)了一個(gè)TreeGird復(fù)合控件,該控件主要由DateGridView和TreeView組成的新控件。通過設(shè)計(jì)數(shù)據(jù)的父項(xiàng)和子項(xiàng)類,來實(shí)現(xiàn)數(shù)據(jù)的自動歸類和分層的功能,通過TreeView控件節(jié)點(diǎn)閉合與展開,實(shí)現(xiàn)DateGridView數(shù)據(jù)的顯示和隱藏功能,并以DateGridView控件實(shí)現(xiàn)一系列的ERP的系統(tǒng)功能。經(jīng)過實(shí)踐確認(rèn),該控件實(shí)現(xiàn)了數(shù)據(jù)庫高效穩(wěn)定的讀取以及用戶更加直觀的進(jìn)行增刪查改等操作功能。
關(guān)鍵詞:控件;DateGridView;Treeview;自動分層
中圖分類號:TP311.11 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)09-0234-03
Abstract: in order to solve the performance problem of tree structure data in ERP system, the design of a TreeGird composite control, the new control the control is mainly composed of DateGridView and TreeView. Through the design of the data of the parent and child classes, to realize data automatic classification and stratification of function, through the TreeView control node is closed and expansion, DateGridView data display and hidden features, and realize the function of the system are a series of ERP based on DateGridView control. After the practice confirmation, the controls to achieve the stable and efficient database read and users more intuitive for crud functions.
Key words: DateGridView; Treeview; automatic control; hierarchical
傳統(tǒng)的ERP管理軟件由少量的簡單模塊組成,主要以記事功能為主;隨著信息化發(fā)展,ERP管理軟件開始注重于生產(chǎn)、貿(mào)易全過程的進(jìn)展,實(shí)現(xiàn)全過程的業(yè)務(wù)跟蹤,這樣可以隨時(shí)掌握整個(gè)公司、各個(gè)分公司的運(yùn)營情況[1]。在錄入訂單信息、跟蹤物流等繁瑣的工作更容易出錯,因此,為了能夠直觀顯示數(shù)據(jù)且方便的操作,ERP系統(tǒng)中一般使用樹狀結(jié)構(gòu)來表現(xiàn)數(shù)據(jù)關(guān)系,但未能表現(xiàn)出樹狀結(jié)構(gòu)中所得到的數(shù)據(jù),目前在用C#開發(fā)的軟件也中還沒有成熟好用的開源控件可以解決樹狀結(jié)構(gòu)的數(shù)據(jù)表現(xiàn)。本文設(shè)計(jì)一個(gè)TreeGird復(fù)合控件,解決樹狀結(jié)構(gòu)數(shù)據(jù)表現(xiàn)問題。
該TreeGird復(fù)合控件,是基于.NET Framework的可重用組件,分為復(fù)合控件、擴(kuò)展控件和自定義控件三類。其中,復(fù)合控件就是將多個(gè)控件封裝在一個(gè)窗體中,它既可以保留每個(gè)被包含控件的原有的功能,也可以選擇地公開它們的部分屬性。復(fù)合控件繼承與UserControl類,擁有了大量的默認(rèn)鼠標(biāo)、鍵盤處理的功能[2]。
1 基礎(chǔ)控件的設(shè)計(jì)
1.1 外觀設(shè)計(jì)
該控件外觀設(shè)計(jì)由TreeView和DataGridView組合成新控件,左邊樹狀的每個(gè)級別都分別對應(yīng)右邊的數(shù)據(jù)源,如圖1所示。
1.2 應(yīng)用流程
開發(fā)者首先向該控件添加數(shù)據(jù),調(diào)用GetDataTable方法,當(dāng)滿足需求時(shí),可以顯示出BOM表。BOM作為“零部件表”,能具體顯示產(chǎn)品的組成結(jié)構(gòu),而且還得說明該產(chǎn)品在制造過程中的階段[3]。TreeGrid控件流程如圖2所示。
代碼范例如下:
var d = GetDataTable();
this.treeGrid1.dataTable = d;
public DataTable GetDataTable()
{
DataTable dt = new DataTable();
if (SqlConnection1.State == ConnectionState.Closed)
{
SqlConnection1.Open();
}
SqlCommand ccgc = new SqlCommand("PX", SqlConnection1);
ccgc.CommandType = CommandType.StoredProcedure;
SqlDataReader sdr = ccgc.ExecuteReader();
dt.Load(sdr);
SqlConnection1.Close();
return dt;
}
1.3 使用要求
數(shù)據(jù)源本身必須符合等級關(guān)系以及符合樹狀結(jié)構(gòu),第一列數(shù)據(jù)用1來表示第一層,用2表示第二層,以此類推;兩個(gè)2之間的3屬于前面的2,兩個(gè)3之間的4屬于前面的3,以此類推。1和3之前必然存在2。圖3是樹狀控件與數(shù)據(jù)源第一列數(shù)據(jù)的對應(yīng)關(guān)系。
2 控件實(shí)現(xiàn)自動分層的方法
2.1 展開與收起指定層級
展開與收起條目,默認(rèn)用鼠標(biāo)點(diǎn)擊“+”時(shí)展開下一級別,“-”時(shí)收起當(dāng)前級別以下的條目。觸發(fā)AfterCollapse和AfterExpand事件,調(diào)用tableChange()方法,利用遞歸算法顯示出展開與收起指定層次的數(shù)據(jù)。
private void treeView1_AfterExpand(object sender, TreeViewEventArgs e) //展開節(jié)點(diǎn)
{
tableChIange();
}
private void treeView1_AfterCollapse(object sender, TreeViewEventArgs e) //折疊節(jié)點(diǎn)
{
tableChange();
}
2.2 展開與收起當(dāng)前節(jié)點(diǎn)
private void
收起當(dāng)前節(jié)點(diǎn)
ToolStripMenuItem_Click(object sender, EventArgs e)
{
treeView1.SelectedNode.Collapse();
}
private void
展開當(dāng)前節(jié)點(diǎn)
ToolStripMenuItem_Click(object sender, EventArgs e)
{
treeView1.SelectedNode.ExpandAll();
}
2.3 展開與收起所有節(jié)點(diǎn)
private void
展開所有節(jié)點(diǎn)
ToolStripMenuItem_Click(object sender, EventArgs e)
{
treeView1.ExpandAll();
tableChange();
}
private void
收起所有節(jié)點(diǎn)
ToolStripMenuItem_Click(object sender, EventArgs e)
{
treeView1.CollapseAll();
}
3 該控件在ERP系統(tǒng)中的應(yīng)用
在ERP系統(tǒng)中,有很多地方應(yīng)用到這種數(shù)據(jù)結(jié)構(gòu)。
首先,ERP是建立于中大型數(shù)據(jù)庫的信息系統(tǒng),大量數(shù)據(jù)都會進(jìn)行增、刪、查、改等操作,因此,組合樹狀控件能為ERP帶來更高效的訪問速度。其次,這些數(shù)據(jù)在軟件中可以表現(xiàn)為樹狀結(jié)構(gòu)(即層次化結(jié)構(gòu)),TreeView能解決這種情況,再結(jié)合DataGridView能為用戶提供更加直觀的數(shù)據(jù)顯示。
其次,ERP系統(tǒng)中有大量的數(shù)據(jù)都存在著從屬關(guān)系,這些數(shù)據(jù)在軟件中可以表現(xiàn)為樹狀結(jié)構(gòu),而該控件剛好解決了這個(gè)問題,而且能把數(shù)據(jù)顯示出來。
在ERP系統(tǒng)中,有大量數(shù)據(jù),在它們之間有著從屬關(guān)系,如物料清單的數(shù)據(jù),還有排產(chǎn)、生產(chǎn)計(jì)劃控制、工程管理、項(xiàng)目管理等的數(shù)據(jù)[4]。這些數(shù)據(jù)在系統(tǒng)軟件中展示給用戶時(shí),都可以通過組合樹狀控件來完成。以下是組合樹狀控件在ERP中的實(shí)例。在TreeView中顯示材料等級或者顯示層次。
例1:電子掛鐘物料清單可以利用該控件來顯示。TreeView顯示電子掛鐘的組成成分,DataGridView顯示各種詳細(xì)信息。測試結(jié)果如圖4所示。
例2:增刪查改使界面既可以清楚的顯示數(shù)據(jù),又可以在同一個(gè)界面進(jìn)行方便的操作;刪除時(shí)不會把數(shù)據(jù)庫中的子類不會跟著被刪除掉,這樣是為了方便再次添加父類的時(shí)候能直接顯示出來。如圖5所示。
4結(jié)束語
在ERP系統(tǒng)中,開發(fā)者可以利用組合樹狀控件,使數(shù)據(jù)庫高效穩(wěn)定的讀取,以及用戶更加直觀的進(jìn)行增刪查改等操作[5]。經(jīng)過反復(fù)的實(shí)踐確認(rèn),上訴控件實(shí)現(xiàn)了預(yù)期的功能。
本次的設(shè)計(jì)顯示節(jié)點(diǎn)時(shí)運(yùn)用到了數(shù)據(jù)庫中存儲過程的遞歸方法,TreeView中的遞歸算法,顯示數(shù)據(jù)源時(shí)運(yùn)用到了DataGridView篩選、排序的方法。該控件解決了樹狀結(jié)構(gòu)的數(shù)據(jù)ERP系統(tǒng)中的顯示問題,如物料清單、排產(chǎn)、生產(chǎn)計(jì)劃控制、工程管理、項(xiàng)目管理等,能夠提升程序的用戶體驗(yàn)。該系統(tǒng)能為ERP系統(tǒng)開發(fā)者節(jié)省開發(fā)控件時(shí)間、精力以及經(jīng)費(fèi)。該控件具有良好的可塑性,結(jié)合增刪查改等功能會有更加大的作用。把每個(gè)節(jié)點(diǎn)的“+-”符號改為圖片形式會顯得更加美觀,可以有隱藏,顯示等功能。
參考文獻(xiàn):
[1]張?jiān)弃Q.基于ERP的倉儲信息化管理研究[D].蘭州:蘭州理工大學(xué),2008.
[2]張趙良,朱菊香.面向?qū)ο蠹夹g(shù)在電氣控制仿真組件中的應(yīng)用[J].內(nèi)江科技,2011,32(1):104-105.
[3]范春迎.淺談物料清單在ERP中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2010(6):132-132.
[4]康啟強(qiáng),周霞.PDM和ERP系統(tǒng)集成研究[J].CAD/CAM與制造業(yè)信息化, 2003(12):23-25.
[5]葉小艷.用于MRP開發(fā)的樹表復(fù)合型控件的設(shè)計(jì)[J].順德職業(yè)技術(shù)學(xué)院學(xué)報(bào),2015(1):5-10.