Atlas命名空间Sys.Data下控件介绍——DataColumn,DataRow和DataTable
本系列有如下三篇文章:
- Atlas命名空间Sys.Data下控件介绍——DataSource和XMLDataSource
- Atlas命名空间Sys.Data下控件介绍——DataColumn,DataRow和DataTable
- Atlas命名空间Sys.Data下控件介绍——DataView和DataFilter
在这篇文章中我们将要接触Atlas客户端数据组件中的核心组件——DataTable。顾名思义,DataTable用来表示一个表格状的数据结构。在Atlas客户端数据组件中,DataTable对象是数据源(例如DataSource对象,请参考:Atlas命名空间Sys.Data下控件介绍——DataSource和XMLDataSource )和数据显示控件(例如ListView控件,请参考:使用ASP.NET Atlas ListView控件显示列表数据 )之间的桥梁。DataTable对象是DataSource对象中的一个字段,DataSource对象从服务器取得的数据将被解析并存放在这个DataTable对象中。DataTable对象还可以被DataView对象修饰,例如过滤并只显示其中一部分的行,按照某一列排序,分页等等,当然这些操作都是在客户端进行的,有着极高的效率。
Atlas的Sys.Data组件借用了很多大家都熟悉的ASP.NET和ADO.NET的架构。例如,Atlas的DataSource类似于ADO.NET中的SqlDataSource对象,Atlas中的DataTable类似于ADO.NET中的DataTable对象,Atlas中的ListView类似于ASP.NET中的ListView对象。这种开发模型让我们开发人员感到非常熟悉并更加容易上手。
DataTable类包含一个DataColumn对象的集合以及一个DataRow对象的集合,让我们从DataColumn和DataRow对象开始:
Sys.Data.DataColumn
DataColumn类非常简单,只有如下几个很容易理解的属性:
- columnName:本列的名称。
- dataType:本列中的数据类型。
- defaultValue:本列中数据的默认值。
- isKey:本列中是否为DataTable的关键字段。
- readOnly:本列中的数据是否为只读属性。
Sys.Data.DataRow
DataRow类略显复杂,包含如下属性:
- $isDirty:该行是否经过修改并且尚未提交到服务器保存。
- $index: 该行在DataTable中的索引值。
- $selected:该行是否被选中。
还包含有如下事件:
- propertyChanged:当上述的三个属性被改变时被引发。
Sys.Data.DataTable
下面轮到DataTable了,DataTable类实现了Sys.Data.IData接口,该接口提供的方法在下面的方法列表中,这里不单说明。
DataTable对象有如下属性:
- columns:取得当前DataTable对象中DataColumn对象的集合。您可以对该集合进行添加,删除或修改等操作以修改该DataTable的Schema。
- keyNames:该DataTable对象中所有关键列的columnName属性集合。
- length:该DataTable对象中DataRow数目。
- isDirty:该DataTable对象中是否有DataRow被修改且尚未提交到服务器保存。
DataTable对象有如下方法:
- add:将传入的DataRow对象添加到当前的DataTable中。传入的DataRow对象必须与该DataTable有同样的Schema。推荐首先使用createRow方法来创建新行,然后作为本方法的参数。
- clear:清除当前DataTable的所有行。
- remove:根据传入的DataRow对象,删除当前DataTable的某一行。
- createRow:根据当前DataTable的Schema创建一个新行。
- getChanges:取得对该DataTable的修改。该方法的返回值有如下三个集合:
- updated:修改过的DataRow的集合。
- inserted:添加过的DataRow的集合。
- deleted:删除过的DataRow的集合。
- getColumn:根据传入的列名查找并返回该DataTable中的某个DataColumn对象。
- getRow:根据传入的索引值返回相应的DataRow对象。
- getItem:与getRow方法功能完全一样,估计是为了提供一个更加泛化的名称。
还有如下事件:
- collectionChanged:当DataTable的行被改变后被引发。
- propertyChanged:当以上的某个属性被改变后被引发。
关于DataTable的使用方法以及常见操作,请见我的另一篇文章(英文):Introduction to Atlas DataTable