Dorado 5 : 2.3.1.SubWindow(子窗口) (RF2)

简述

作为页面元素的一个容器,可以动态的调整大小以及随时的移动位置,而其中包含的子元素也一同移动。
运行效果如下:

图表 25

使用简述

在jsp中添加标签

<d:SubWindow id="subwin1" title="子窗口测试" width="100%" height="100%" showMinimizeButton="false" showMaximizeButton="true" draggable="false" resizable="false">
</d:SubWindow>

将需要在子窗口中显示的页面元素添加到标签的内部,如添加DataTable对象:

<d:SubWindow id="subwin1" title="子窗口测试" width="100%" height="100%" showMinimizeButton="false" showMaximizeButton="true" draggable="false" resizable="false">
	<d:DataTable id="tableEmployee" />
</d:SubWindow>

常用技巧

1.显示子窗口
SubWindow提供show方法用于打开子窗口,该方法定义如下:

public void show(Boolean exclusive, Boolean center)

显示
Parameters
exclusive - Boolean - 是否以排他式子窗体的方式显示
center - Boolean - 是否自动居中
Returns:
void

2.关闭子窗口
SubWindow提供关闭已经打开的子窗口的方法:

public void hide()

隐藏
Returns:
void

如果子窗口是一个独立的页面,则我们在子页面上如果要关闭当前的子窗口就需要通过SubWindow的静态js函数

public void hideParent()

关闭父页面中的用于显示本页面的子窗体
Returns:
void

在子页面的代码中写入如下的代码就可以关闭包含当前页面的子窗口

SubWindow.hideParent();

浏览器端动态创建SubWindow的方法:

var win =  DoradoFactory.create("SubWindow", "win1", getViewModel(), "hidden");
win.setShowMinimizeButton(true);
win.setShowMaximizeButton(true);
win.setShowCloseButton(true);
win.style.overflow = "hidden";
win.style.width = 640;
win.style.height = 420;
win.setTitle("subwindow");
win.activate();
//win.getContentContainer().appendChild(iframe);//动态嵌入IFrame
document.body.appendChild(win);
win.show(true, true);

主要属性说明

属性

说明

animated

是否打开动画效果,该属性在SubWindow窗体的Status发生变化的时候起作用

draggable

子窗口是否允许拖拽

resizable

子窗口是否可以通过鼠标动态调整大小

showCloseButton

是否显示子窗口的系统关闭按钮

showMaximizeButton

是否显示子窗口的窗口最大化按钮

showMinimizeButton

是否显示子窗口的窗口最小化按钮

status

是否显示子窗口的状态栏,默认为normal
normal:普通状态
maximize:窗体最大化
minimize:窗体最小化
hidden:隐藏

title

子窗口的标题

titleClickAction

子窗口标题栏单击事件执行的动作,默认为普通态与初始态的切换,可选值有:
no_action:没有任何动作
maximize:子窗口最大化
minimize:子窗口最小化

titleDbClickAction

子窗口标题栏双击事件执行的动作,可选值有:
no_action:没有任何动作
maximize:子窗口最大化
minimize:子窗口最小化

其中animated属性可以直接在setting.xml中通过
view.smartweb2.defaultAnimated属性进行系统全局的属性配置

主要事件说明

参考client-api

其他SubWindow的产生形态

通常SubWindow我们都是通过<d:SubWindow.../>标签在JSP上直接定义。除此之外,我们还有两种创建SubWindow的方式:

RequestCommand

RequestCommand的<Frame>节点我们可以通过设置其target为_subwindow或_exclusive_subwindow,使RequestCommand以弹出之窗口的方式打开一个新的URL.

CustomDropDown

我们在CustomDropDown中,通过设置openMode为subwindow时,CustomDropDown将以弹出窗口的方式进行展现

AutoForm

AutoForm的groupType设置为subwindow时,其内部的Group对象将会展示为一个SubWindow,默认情况下subwindow的:
showMaximizeButton=true;
ShowMinimizeButton=false;
ShowcloseButton=false;
对于此规则我们可以通过setting.xml中增加view.autoform.subwindow.buttons="min,max,close"来配置系统整体的效果(DORADO 5.4及以后版本)

问答

如何通过js关闭弹出的subwindows?

  • 调用SubWindow的hide()方法即可,如subwindow的id为sub1,则写为sub1.hide();
  • 如果是RequestCommand打开或CustomDropDown打开的SubWindow,则通过全局的方法:SubWindow.hideParent();方法解决。

如何去除subwindow打开窗体中的地址信息?

设置JSP的title即可。

怎样在dorado中添加一个模态化的子窗口?就是通过点击某个按钮后,跳转到子窗口页面,但是要求子窗口不是嵌在JSP中,类似于悬浮的效果。

SubWindow就具有悬浮效果,试试看 范例:http://www.bstek.com/dorado5/skills/other/namespace.jsp

采用requestcommand打开的subwindow没有滚动条。

在被打开的jsp页面中对body节点添加声明scroll=true

subwindow 标题字体颜色怎么修改

找到skin.css,

.SubWindow .TitleBar TD { 
color: white;;--修改代码 
font-weight:bold; 
} 
.FloatSubWindow .TitleBar TD { 
color: red;;--修改代码 
font-weight:bold; 
}