Dorado 9 : 操作数据(sample-center)

简述

在Dorado中DataSet在较为复杂的情况下是一个立体结构的数据,本文将通过一个范例想大家说明对立体数据结构中的Entity对象的存取以及创建和删除Entity对象的基本操作技巧。帮助大家熟悉一些常用的数据实体相关的API的使用方法。

首先区分集合类对象还是实体类对象

DataSet有时候被设计为单实体对象的数据容器,常见场景如注册页面,或这一个表单页面:

这种类型的业务开发时,我们往往会通过DataType属性设定DataSet为一个单实体对象的容器:

下图是一个多实体对象的DataSet的定义:

注意他们的区别,如果是单实体对象,器DataType属性的定义就是一个DataType的名称,而如果是集合类,就需要加中括号:[DataTypeName].

集合类的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的结构相对简单,在如下的更为复杂的数据结构中,如何定位数据节点,并做进一步的操作呢?