APP下载

DateGridView 控件的自动分层技术实现及其应用

2015-06-02廖璐叶小艳施锦镇

电脑知识与技术 2015年9期
关键词:树状数据源控件

廖璐 叶小艳 施锦镇

摘要:为了解决ERP系统中树状结构数据表现问题,设计了一个TreeGird复合控件,该控件主要由DateGridView和TreeView组成的新控件。通过设计数据的父项和子项类,来实现数据的自动归类和分层的功能,通过TreeView控件节点闭合与展开,实现DateGridView数据的显示和隐藏功能,并以DateGridView控件实现一系列的ERP的系统功能。经过实践确认,该控件实现了数据库高效稳定的读取以及用户更加直观的进行增删查改等操作功能。

关键词:控件;DateGridView;Treeview;自动分层

中图分类号:TP311.11 文献标识码: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

传统的ERP管理软件由少量的简单模块组成,主要以记事功能为主;随着信息化发展,ERP管理软件开始注重于生产、贸易全过程的进展,实现全过程的业务跟踪,这样可以随时掌握整个公司、各个分公司的运营情况[1]。在录入订单信息、跟踪物流等繁琐的工作更容易出错,因此,为了能够直观显示数据且方便的操作,ERP系统中一般使用树状结构来表现数据关系,但未能表现出树状结构中所得到的数据,目前在用C#开发的软件也中还没有成熟好用的开源控件可以解决树状结构的数据表现。本文设计一个TreeGird复合控件,解决树状结构数据表现问题。

该TreeGird复合控件,是基于.NET Framework的可重用组件,分为复合控件、扩展控件和自定义控件三类。其中,复合控件就是将多个控件封装在一个窗体中,它既可以保留每个被包含控件的原有的功能,也可以选择地公开它们的部分属性。复合控件继承与UserControl类,拥有了大量的默认鼠标、键盘处理的功能[2]。

1 基础控件的设计

1.1 外观设计

该控件外观设计由TreeView和DataGridView组合成新控件,左边树状的每个级别都分别对应右边的数据源,如图1所示。

1.2 应用流程

开发者首先向该控件添加数据,调用GetDataTable方法,当满足需求时,可以显示出BOM表。BOM作为“零部件表”,能具体显示产品的组成结构,而且还得说明该产品在制造过程中的阶段[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 使用要求

數据源本身必须符合等级关系以及符合树状结构,第一列数据用1来表示第一层,用2表示第二层,以此类推;两个2之间的3属于前面的2,两个3之间的4属于前面的3,以此类推。1和3之前必然存在2。图3是树状控件与数据源第一列数据的对应关系。

2 控件实现自动分层的方法

2.1 展开与收起指定层级

展开与收起条目,默认用鼠标点击“+”时展开下一级别,“-”时收起当前级别以下的条目。触发AfterCollapse和AfterExpand事件,调用tableChange()方法,利用递归算法显示出展开与收起指定层次的数据。

private void treeView1_AfterExpand(object sender, TreeViewEventArgs e) //展开节点

{

tableChIange();

}

private void treeView1_AfterCollapse(object sender, TreeViewEventArgs e) //折叠节点

{

tableChange();

}

2.2 展开与收起当前节点

private void

收起当前节点

ToolStripMenuItem_Click(object sender, EventArgs e)

{

treeView1.SelectedNode.Collapse();

}

private void

展开当前节点

ToolStripMenuItem_Click(object sender, EventArgs e)

{

treeView1.SelectedNode.ExpandAll();

}

2.3 展开与收起所有节点

private void

展开所有节点

ToolStripMenuItem_Click(object sender, EventArgs e)

{

treeView1.ExpandAll();

tableChange();

}

private void

收起所有节点

ToolStripMenuItem_Click(object sender, EventArgs e)

{

treeView1.CollapseAll();

}

3 该控件在ERP系统中的应用

在ERP系统中,有很多地方应用到这种数据结构。

首先,ERP是建立于中大型數据库的信息系统,大量数据都会进行增、删、查、改等操作,因此,组合树状控件能为ERP带来更高效的访问速度。其次,这些数据在软件中可以表现为树状结构(即层次化结构),TreeView能解决这种情况,再结合DataGridView能为用户提供更加直观的数据显示。

其次,ERP系统中有大量的数据都存在着从属关系,这些数据在软件中可以表现为树状结构,而该控件刚好解决了这个问题,而且能把数据显示出来。

在ERP系统中,有大量数据,在它们之间有着从属关系,如物料清单的数据,还有排产、生产计划控制、工程管理、项目管理等的数据[4]。这些数据在系统软件中展示给用户时,都可以通过组合树状控件来完成。以下是组合树状控件在ERP中的实例。在TreeView中显示材料等级或者显示层次。

例1:电子挂钟物料清单可以利用该控件来显示。TreeView显示电子挂钟的组成成分,DataGridView显示各种详细信息。测试结果如图4所示。

例2:增删查改使界面既可以清楚的显示数据,又可以在同一个界面进行方便的操作;删除时不会把数据库中的子类不会跟着被删除掉,这样是为了方便再次添加父类的时候能直接显示出来。如图5所示。

4结束语

在ERP系统中,开发者可以利用组合树状控件,使数据库高效稳定的读取,以及用户更加直观的进行增删查改等操作[5]。经过反复的实践确认,上诉控件实现了预期的功能。

本次的设计显示节点时运用到了数据库中存储过程的递归方法,TreeView中的递归算法,显示数据源时运用到了DataGridView筛选、排序的方法。该控件解决了树状结构的数据ERP系统中的显示问题,如物料清单、排产、生产计划控制、工程管理、项目管理等,能够提升程序的用户体验。该系统能为ERP系统开发者节省开发控件时间、精力以及经费。该控件具有良好的可塑性,结合增删查改等功能会有更加大的作用。把每个节点的“+-”符号改为图片形式会显得更加美观,可以有隐藏,显示等功能。

参考文献:

[1]张云鹤.基于ERP的仓储信息化管理研究[D].兰州:兰州理工大学,2008.

[2]张赵良,朱菊香.面向对象技术在电气控制仿真组件中的应用[J].内江科技,2011,32(1):104-105.

[3]范春迎.浅谈物料清单在ERP中的应用[J].数字技术与应用,2010(6):132-132.

[4]康启强,周霞.PDM和ERP系统集成研究[J].CAD/CAM与制造业信息化, 2003(12):23-25.

[5]叶小艳.用于MRP开发的树表复合型控件的设计[J].顺德职业技术学院学报,2015(1):5-10.

猜你喜欢

树状数据源控件
钢结构树状支撑柱施工设计
Web 大数据系统数据源选择*
树状月季的嫁接技术及后期管理
基于不同网络数据源的期刊评价研究
树状月季培育关键技术
基于真值发现的冲突数据源质量评价算法
ASP.NET服务器端验证控件的使用
分布式异构数据源标准化查询设计与实现
Spreadsheet控件在Delphi数据库系统中的编程与应用