Dorado 7 : 17.3.5.1 修改视图并添加控件

在前面完成了部门下拉框的开发,部门数据是采用部门名称列表的方式进行展示,但在特定的业务需求下,为了提高易用性而采用递归树控件进行部门展示,在本节开发中,我们使用CustomDropDown来对部门下拉框进行优化。

 

步骤1:修改DataType

既然要开发递归树,那么我们首先需要修改SlDept这个DataType,为了提高性能采用延迟加载。

在SlDept这个DataType下新增1个Reference设置Reference的属性如下:

属性说明
nameslDeptSetReference的名称
dataProviderdeptService#getDeptByParentId跟DataSet的dataProvider一致,由deptService这个bean中的getDeptByParentId方法为Reference对象提供数据加载服务
dataType[SELF]DataType
parameter$${this.deptId}动态EL表达式。表示以当前SlDept对象的ID作为parameter的值

如下图所示:

 

步骤2:修改DataSet

接下来修改datasetDept,设置属性如下:

属性说明
dataProviderdeptService#getTopDept由deptService这个bean中的getTopDept方法为DataSet提供数据加载服务

 

步骤3:添加CustomDropDown

在【ViewConfig】节点下的【View】节点下添加一个CustomDropDown控件,设置属性如下:

属性说明
idcustomDropDownCommonDept控件的Id
width400CustomDropDown控件的宽度
height300CustomDropDown控件的高度

CustomDropDown控件是个容器控件,接下来我们需要在此控件下添加一个DataTree控件,并设置属性如下:

属性说明
iddatatreeDept控件的Id
dataSetdatasetDept通过dataSet属性告知DataTree绑定是哪些数据,以便在DataTree中展示和处理

在节点BindingConfigs下添加一个BindingConfig子节点,设定BindingConfig属性:

属性

 说明

labelProperty

deptName

以当前节点对应的实体对象的label属性作为树节点的标题信息

namedept名称

childrenProperty

slDeptSet

获取当前节点的slDeptSet属性,作为子节点的数据

recursivetrue是否支持递归处理

如下图所示:

接下来需要为递归树绑定事件,在点击树节点时,将部门对象传递了输入框中并关闭下拉框。

为datatreeDept绑定onDataRowClick事件,在onDataRowClick事件编辑区中输入如下代码:

var dropDown = dorado.widget.DropDown.findDropDown(self);
var node = self.get("currentNode");
dropDown.close(node.get("data"));

info

onDataRowClick事件是当数据行被点击时触发的事件。

findDropDown方法根据传入的控件查找其所属的下拉框。

在本例中:我们在自定义下拉框中放置了树控件,在操作树后需要知道自己关闭的哪个下拉框,此时即可使用此方法查找其所属的下拉框。

 

步骤4:修改autoformEmployee

找到【autoformEmployee】控件下的slDept字段,修改其属性如下:

属性说明
triggercustomDropDownCommonDept关联的编辑框触发器

到目前为止,View部分设置完毕,接下来我们查看运行效果。

 

Attachments:

17.3-12.png (image/png)
17.3-14.png (image/png)
17.3-15.png (image/png)