简述
在Dorado中DataSet在较为复杂的情况下是一个立体结构的数据,本文将通过一个范例想大家说明对立体数据结构中的Entity对象的存取以及创建和删除Entity对象的基本操作技巧。帮助大家熟悉一些常用的数据实体相关的API的使用方法。
首先区分集合类对象还是实体类对象
DataSet有时候被设计为单实体对象的数据容器,常见场景如注册页面,或这一个表单页面:
这种类型的业务开发时,我们往往会通过DataType属性设定DataSet为一个单实体对象的容器:
下图是一个多实体对象的DataSet的定义:
集合类的DataSet在数据展示是,往往会采用表格或树的形式展现,如下的表格展现:
获取DataSet中顶层数据的方法
对于单实体对象,获取这个对象的方法为:
var entity = dataSet.getData();//如果dataSet是单实体对象,返回的就是一个Entity对象 var value = entity.get(property);//指定属性名获取属性值
如果是对象集合,则getData()方法返回的就是一个Entity的List对象:
var entityList = dataSet.getData();//如果dataSet是对象集合,返回的就是一个Entity的List entityList.each(function(entity){ var value = entity.get(property);//访问数组内部Entity对象的指定属性名对应的属性值 });
修改数据
修改实体对象某一个属性的方法:
entity.set(property,value);//指定属性名获取属性值
范例:
entity.set("employeeId", "ANLIN");
也可以一次性的修改多个属性,范例:
entity.set({employeeId:"ANLIN", employeeName:"安林"});
新增DataSet中顶层数据的方法
一般情况下,我们可以通过DataSet的insert()方法插入一条记录,范例:
ds.insert();
insert方法向数据集中添加一条顶层记录。
- 如果数据集的数据类型是集合,那么此方法表示向顶层集合中添加一条记录。
- 如果数据集的数据类型是实体类型,那么此方法表示直接新建一条记录并将其设置为数据集的顶层数据。 如果在执行此方法之前数据集的顶层数据不是空,那么此方法将会报错。
我们也可以在调用insert方法的时候提供一个初始化的数据:
ds.insert({ employeeId: "ANLIN", employeeName: "安林", sex: true, salary: 8251.90, degree: "大学" });
集合类数据对象中当前记录的概念
对于一个数组对象在很多情况下,都是使用DataGrid展现数据的,如:
当我们单击表格的某一行数据的时候,DataSet会自动将这行数据标记为当前记录,并在Grid中也会有不同的颜色加以区分。
如下三个用户对象,如果这个时候在DataSet内部已经将第一个用户对象标记为当期记录的时候:
我们可以通过EntityList的current属性获取当前记录:
var entityList = dataSet.getData(); var currentEntity = entityList.current;//获取entityList的当前Entity对象 var value = currentEntity.get(property);//获取Entity对象的指定属性名对应的属性值
另外我们也可以通过DataPath机制直接通过DataSet获取当前记录:
var currentEntity = dataSet.getData("#");//获取dataSet的当前Entity对象 var value = currentEntity.get(property);//获取Entity对象的指定属性名对应的属性值
上面两段JS代码的效果是一样的。
复杂场景
当然了以上介绍的DataSet的结构相对简单,在如下的更为复杂的数据结构中,如何定位数据节点,并做进一步的操作呢?
Attachments:
image2012-6-29 12:57:22.png (image/png)
image2012-6-29 12:58:24.png (image/png)
image2012-6-29 13:8:49.png (image/png)
image2012-6-29 13:10:46.png (image/png)
image2020-5-9 17:8:4.png (image/png)
image2020-5-9 17:8:13.png (image/png)