概述
在4.4节和4.5节,了解了Dorado中的主从绑定,在这一节仍然是类似的内容,只不过表现形式换成了下拉框。本示例链接如下:
准备工作
新建一工程CascadeDropdown,并且配置好数据库,具体步骤参考3.1.2节。
开发步骤
添加Dataset
步骤1:新建一Common ViewModel,文件名为CascadeDropdown。
步骤2:添加一AutoSqlDataset,选择Branch表,选择Branch表的所有字段,Dataset的设置如下:
属性 | 值 |
---|---|
id | datasetBranch |
originTable | BRANCH |
步骤3:添加一AutoSqlDataset,选择Dept表,选择Dept表的所有字段,Dataset的设置如下:
属性 | 值 |
---|---|
id | datasetDept |
originTable | DEPT |
步骤4:为datasetDept添加一BaseMatchRule,BaseMatchRule的属性设置如下:
属性 | 值 |
---|---|
level | 1 |
operator | = |
originField | BRANCH_ID |
table | DEPT |
value | :BRANCH_ID |
步骤5:为datasetDept设置MasterLink, MasterLink设置如下:
属性 | 值 |
---|---|
masterDataset | datasetBranch |
masterKeyFields | BRANCH_ID |
detailKeyFields | BRANCH_ID |
detailKeyParameters | BRANCH_ID |
步骤6:添加一AutoSqlDataset,选择Employee表,选择Employee表的如下字段:
datasetEmployee表的设置如下:
属性 | 值 |
---|---|
id | datasetEmployee |
originTable | EMPLOYEE |
步骤7:为datasetEmployee添加一BaseMatchRule,BaseMatchRule的属性设置如下:
属性 | 值 |
---|---|
level | 1 |
operator | = |
originField | DEPT_ID |
table | EMPLOYEE |
value | :DEPT_ID |
步骤8:为datasetEmployee设置MasterLink, MasterLink的属性设置如下:
属性 | 值 |
---|---|
masterDataset | datasetDept |
detailKeyParameters | DEPT_ID |
masterKeyFields | DEPT_ID |
detailKeyFields | DEPT_ID |
步骤9:添加一FormDataset,id设置为datasetDataset。为其添加三个Field如下:
Name | Data Type |
---|---|
BRANCH_NAME | string |
DEPT_NAME | string |
EMPLOYEE_NAME | string |
步骤10:在Source上点击右键,在弹出的菜单中选中New->Module,如图所示:
在弹出的对话框中输入Cascade,点击OK。
步骤10:选中刚才建立的datasetBranch,datasetDept,datasetEmployee,按Ctrl+C键复制。打开刚才创建的Module,按Ctrl+V键粘贴。如下图所示:
步骤11:添加一FormDataset,id设置为datasetDynamic。为其添加三个Field如下:
Name | Data Type |
---|---|
BRANCH_NAME | string |
DEPT_NAME | string |
EMPLOYEE_NAME | string |
添加DropDown(记得设置列)
步骤1:添加一DatasetDropDown,属性设置如下:
属性 | 值 |
---|---|
id | dropdownDept |
dataset | datasetDept |
mapValue | true |
valueField | DEPT_NAME |
labelField | DEPT_NAME |
步骤2:添加一DatasetDropDown,属性设置如下:
属性 | 值 |
---|---|
id | dropdownBranch |
dataset | datasetBranch |
mapValue | true |
valueField | BRANCH_NAME |
labelField | BRANCH_NAME |
步骤3:添加一DatasetDropDown,属性设置如下:
属性 | 值 |
---|---|
id | dropdownEmployee |
dataset | datasetEmployee |
mapValue | true |
valueField | EMPLOYEE_NAME |
labelField | EMPLOYEE_NAME |
步骤4:设置datasetDataset列branch_name,dept_name,employee_name的DropDown属性分别为:dropdownBranch,dropdownDept ,dropdownEmployee。
步骤5:添加一DynamicDropDown,id设置为dropdownEmployee1,Dataset节点属性设置如下:
属性 | 值 |
---|---|
sourceModule | Cascade |
sourceDataset | datasetEmployee |
步骤6:添加一DynamicDropDown,id设置为dropdownDept1,Dataset节点属性设置如下:
属性 | 值 |
---|---|
sourceModule | Cascade |
sourceDataset | datasetDept |
为dropdownDept1的onSelect事件添加如下代码:
dropdownEmployee1.parameters().setValue("dept_id", selectedObject.getValue("dept_id")); return true;
步骤7:添加一DatasetDropDown,属性设置如下:
属性 | 值 |
---|---|
id | dropdownBranch1 |
dataset | datasetBranch |
为dropdownBranch1的onSelect事件添加如下代码:
dropdownDept1.parameters().setValue("branch_id", selectedObject.getValue("branch_id")); return true;
步骤8:设置datasetDynamic列branch_name,dept_name,employee_name的DropDown属性分别为:dropdownBranch1,dropdownDept1,dropdownEmployee1。
添加AutoForm
步骤1:添加一AutoForm,属性设置如下:
属性 | 值 |
---|---|
id | formDataset |
dataset | datasetDataset |
width | 30% |
步骤2:选中formDataset,点击生成字段按钮。formDataset的FormGroup属性设置如下:
属性 | 值 |
---|---|
ame | group1 |
title | 利用DatasetDropDown实现的联动下拉 |
columnCount | 1 |
步骤3:添加一AutoForm,属性设置如下:
属性 | 值 |
---|---|
id | formDynamic |
dataset | datasetDynamic |
步骤4:选中formDynamic,点击生成字段按钮。formDynamic的FormGroup属性设置如下:
属性 | 值 |
---|---|
title | 利用DynamicDropDown实现的联动下拉 |
name | group1 |
columnCount | 1 |
width | 30% |
创建Jsp页面
生成Jsp页面以后再编辑一下内容,最后结果如下:
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="http://www.bstek.com/dorado" prefix="d" %> <html> <head> <title>联动下拉框</title> </head> <body> <d:View config="CascadeDropdown"> <d:AutoForm id="formDataset" /> <d:AutoForm id="formDynamic" /> </d:View> </body> </html>
查看运行效果
启动服务器后,浏览效果如下:
可以看到,当选择分公司或者部门的时候,其余的Dropdown都在进行动态的改变。
知识点
Dorado提供了MasterLink属性动态的为动态的SQL语句赋值的方法。在SQL语句中尚存在没有赋值的参数时,dataset会自动地检查MasterLink的设置。如果为MasterLink属性定义了属性值,dataset就会从该属性值配置中查找另一个dataset的相关参数值,并且匹配到当前dataset的参数集合中。
想深入了解,可以查看《Dorado 5用户指南 1.1》的5.3.4.3节。
Attachments:
worddav90de6111e6098ca610431f2611934d76.png (image/png)