Dorado 5 : 10.6.动态及跨框架的数据绑定 (T22)

概述

本例演示了如何实现动态的数据绑定、跨越浏览器框架的数据绑定。本示例链接如下:

 

准备工作

新建一工程dynabinding,并且配置好数据库,具体步骤参考3.1.2节。

开发步骤

添加DynaBinding

步骤1:添加一Common ViewModel,文件名为DynaBinding。
为DynaBinding的function中定义如下函数:

function establishBinding(dataset) { 
	datapilot.setDataset(dataset); 
}

步骤2:添加一DataPolit,id设置为datapilot。
步骤3:添加一TabSet,添加3个FrameTab,FrameTab的设置如下:

Name

Label

Path

tab1

员工信息维护

dyna-binding-frame1.jsp

tab2

部门信息维护

dyna-binding-frame2.jsp

tab3

分公司信息维护

dyna-binding-frame3.jsp

为TabSet的afterTabChange事件添加如下代码:

var frame = tab.getFrame(); 
if (typeof(frame.contentWindow.registerMe) == "function") { 
	frame.contentWindow.registerMe(); 
}

添加DynaBindingFrame1

步骤1:添加一View,名为DynaBindingFrame1
步骤2:添加一AutoSqlDataset,选择Employee表,选择所有列,属性设置如下:

属性

id

datasetEmployee

originTable

EMPLOYEE

步骤3:添加一DataTable,属性设置如下:

属性

id

tableEmployee

dataset

datasetEmployee

width

100%

height

100%

步骤4:添加一RequestCommand,属性设置如下:

属性

id

commandOpenDialog

path

dyna-binding-frame1-dialog.jsp

设置commandOpenDialog的Frame属性如下:

属性

target

_modeless_dialog

resizable

true

width

400

height

400

步骤5:添加一Button,属性设置如下:

属性

id

buttonOpenDialog

value

打开绑定此数据集的新框架

为Button的onClick事件添加代码如下:

commandOpenDialog.execute(window);

步骤6:为DynaBindingFrame1的function添加如下代码:

function registerMe(){ 
	 window.parent.establishBinding(datasetEmployee); 
}

为DynaBindingFrame1的onDatasetsPrepared事件添加如下代码:

registerMe();

添加DynaBindingFrame1Dialog

步骤1:添加一View,名为DynaBindingFrame1Dialog
步骤2:添加一DataPolit,属性设置如下:

属性

id

datapilotEmployee

dataset

datasetEmployee

步骤3:添加一AutoForm,属性设置如下:

属性

id

formEmployee

dataset

datasetEmployee

步骤4:为DynaBindingFrame1Dialog的function中添加如下代码:

var datasetEmployee = window.dialogArguments.datasetEmployee; 
registerDataset(datasetEmployee); 

添加DynaBindingFrame2

步骤1:添加一View,名为DynaBindingFrame2。
步骤2:添加一AutoSqlDataset,选择Dept表,选择所有字段,属性设置如下:

属性

id

datasetDept

originTable

DEPT

步骤3:添加一DataTable,属性设置如下:

属性

id

tableDept

dataset

datasetDept

showHScrollBar

false

height

100%

width

100%

步骤4:为DynaBindingFrame2的function添加如下代码:

function registerMe(){ 
	window.parent.establishBinding(datasetDept); 
}

为DynaBindingFrame2的onDatasetsPrepared事件添加如下代码:

registerMe();

添加DynaBindingFrame3

步骤1:添加一View,名为DynaBindingFrame3
步骤2:添加一AutoSqlDataset,选择Branch表,选择所有字段,属性设置如下:

属性

id

datasetBranch

originTable

BRANCH

步骤3:添加一DataTable,属性设置如下:

属性

id

tableBranch

dataset

datasetBranch

width

100%

height

100%

showHScrollBar

false

步骤4:为DynaBindingFrame3的function添加如下代码:

function registerMe(){ 
	window.parent.establishBinding(datasetBranch); 
}

为DynaBindingFrame3的onDatasetsPrepared事件添加如下代码:

registerMe();

创建Jsp页面

新建了5个View,则会创建五个页面,下面分别是五个页面的内容:
dyna-binding.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="DynaBinding"> 
 <d:DataPilot id="datapilot" /> 
 <d:TabSet id="tabset" /> 
 </d:View> 
 </body> 
 </html>

dyna-binding-frame1.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="DynaBindingFrame1"> 
 <d:DataTable id="tableEmployee" /> 
 <d:Button id="buttonOpenDialog" /> 
 </d:View> 
 </body> 
 </html>

dyna-binding-frame1-dialog.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="DynaBindingFrame1Dialog"> 
 <d:DataPilot id="datapilotEmployee" /> 
 <d:AutoForm id="formEmployee" /> 
 </d:View> 
 </body> 
 </html>

dyna-binding-frame2.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="DynaBindingFrame2"> 
 <d:DataTable id="tableDept" /> 
 </d:View> 
 </body> 
 </html>

dyna-binding-frame3.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="DynaBindingFrame3"> 
 <d:DataTable id="tableBranch" /> 
 </d:View> 
 </body> 
 </html>

查看运行效果

启动服务器后,浏览dyna-binding.jsp,效果如下:

切换不同的标签页,可以使用同一个PagePolit进行数据控制。

知识点

本示例是在客户端控制Dorado中组件的灵活应用,无新知识点。