Dorado 5 : 5.16.Dataset的监听器 (RF1)

Dataset监听器用于监听Dataset中的各种事件,在某些书籍中的术语叫回调机制。
在AJAX应用中监听器的作用更像是一个服务器端的服务接口。随时为dataset的数据请求和数据保存等各种动作提供服务。
例如dataset数据翻页时或dataset的数据保存时。都会触发监听器各种事件。Dataset通过listener属性定义监听器对象,如在xml中定义listener则范例代码如下:

<Dataset id="datasetDegree" type="Custom" listener="sample.HR_datasetDegreeListener">
<Fields>
<Field name="degree" dataType="string">
<Properties />
</Field>
</Fields>
</Dataset>

其中HR_datasetDegreeListener是一个java类,继承自com.bstek.dorado.data.AbstractDatasetListener抽象类。示例代码如下:

package sample;

import com.bstek.dorado.data.AbstractDatasetListener;
import com.bstek.dorado.data.Dataset;

/**

  • HR_datasetDegreeListener
    */
    public class HR_datasetDegreeListener
    extends AbstractDatasetListener {
    public void afterLoadData(Dataset dataset)
    throws Exception {
    dataset.insertRecord();
    dataset.setString("degree", "高中");
    dataset.insertRecord();
    dataset.setString("degree", "大专");
    dataset.insertRecord();
    dataset.setString("degree", "大学");
    dataset.insertRecord();
    dataset.setString("degree", "硕士");
    dataset.insertRecord();
    dataset.setString("degree", "博士");
    dataset.insertRecord();
    dataset.setString("degree", "其它");
    }

    }

该类中实现了afterLoadData方法,该方法是dataset实现数据加载时调用的方法。我们在这个方法中给dataset添加一些数据。添加数据结束后dataset会自动地将数据push到客户端。
监听器可以实现的监听事件主要有:

字段创建事件

当dataset执行createFields时触发的事件,在监听器中加入了两个事件接口:

beforeCreateFields

当Dataset将要自动创建所有字段之前触发的事件.即当调用Dataset.createFields()之前触发的事件.

afterCreateFields

当Dataset执行完自动创建所有字段之后触发的事件.即当调用Dataset.createFields()之后触发的事件.

数据导入事件

当dataset利用自身的配置信息从外部导入数据时发生,数据导入动作在AJAX技术是最经常使用的动作,也是服务器端编程的重要接口。开发人员可以在该处获取客户端的请求参数信息,并加以处理,用自定义的逻辑返回数据提供给客户端。
该事件比较典型的发生场景为客户端的flushData动作,主从表联动操作,数据树的延迟加载动作,联动下拉框操作等等都会出发服务器端的数据加载动作。如果此时对产生数据导入事件的dataset配置了监听器,则系统就会自动出发beforeLoadData以及afterLoadData事件。

beforeLoadData

详细参考Server-API。

afterLoadData

详细参考Server-API。

数据保存事件

与数据导入事件一样,数据集执行数据保存时触发beforeUpdateData,afterUpdateData事件。

beforeUpdateData

详细参考Server-API。

afterUpdateData

详细参考Server-API。