概述
子窗体具备一下特性:可在运行期随意拖拽改变大小。支持最大化, 最小化, 还原, 隐藏等操作。支持排他式的显示模式, 可以模拟模态窗体的显示方式。本示例链接如下:
准备工作
新建一工程subwindow,无需配置数据源和数据库。
开发步骤
添加Button
步骤1:添加一Common ViewModel,文件名为SubWindow。
步骤2:在SubWindow的function中定义如下代码:
var serialNumber = 0; var windows = new Array(); var exclusiveWidnow = null;
步骤3:添加一Button,属性设置如下:
属性 | 值 |
---|---|
id | buttonNewWindow1 |
value | 添加随机定位子窗体 |
为buttonNewWindow1的onClick事件添加如下代码:
var contarner = document.getElementById("windowContainer"); for (var i = 0; i < 3; i++) { var win = DoradoFactory.create("SubWindow"); win.setTitle("新的子窗体" + (++serialNumber)); win.style.position = "absolute"; win.style.width = 300; win.style.height = 100; win.style.left = Math.random() * (contarner.offsetWidth - 300); win.style.top = Math.random() * (contarner.offsetHeight - 100); win.setShowCloseButton(true); win.activate(); var color = Math.round(Math.random() * Math.pow(16, 6)).toString(16); if (color.length < 6) { for (var j = color.length; j < 6; j++) color += "0"; } win.getContentContainer().style.backgroundColor = "#" + color; contarner.appendChild(win); EventManager.addDoradoEvent(win, "afterHide", function(subWindow) { subWindow.destroy(); } ); windows.push(win); }
步骤4:添加一Button,属性设置如下:
属性 | 值 |
---|---|
id | buttonNewWindow2 |
value | 添加流式布局子窗体 |
为buttonNewWindow2的onClick事件添加如下代码:
var contarner = document.getElementById("windowContainer"); var win = DoradoFactory.create("SubWindow"); win.setTitle("新的子窗体" + (++serialNumber)); win.style.width = 300; win.style.height = 100; win.setShowCloseButton(true); win.activate(); var color = Math.round(Math.random() * Math.pow(16, 6)).toString(16); if (color.length < 6) { for (var i = color.length; i < 6; i++) color += "0"; } win.getContentContainer().style.backgroundColor = "#" + color; contarner.appendChild(win); EventManager.addDoradoEvent(win, "afterHide", function(subWindow) { subWindow.destroy(); } ); windows.push(win);
步骤5:添加一Button,属性设置如下:
属性 | 值 |
---|---|
id | buttonCloseAll |
value | 关闭所有子窗体 |
为buttonCloseAll的onClick添加如下代码:
for (var i = 0; i < windows.length; i++) { var win = windows[i]; win.hide(); } windows = new Array();
步骤6:添加一Button,属性设置如下:
属性 | 值 |
---|---|
id | buttonShowExclusiveWindow |
value | 显示一个排他子窗体 |
为buttonShowExclusiveWindow的onClick事件添加如下代码:
if (exclusiveWidnow == null) { exclusiveWidnow = DoradoFactory.create("SubWindow", null, null, "hidden"); exclusiveWidnow.setTitle("排他式子窗体"); exclusiveWidnow.style.position = "absolute"; exclusiveWidnow.style.width = 300; exclusiveWidnow.style.height = 200; exclusiveWidnow.setShowMinimizeButton(false); exclusiveWidnow.setShowCloseButton(true); exclusiveWidnow.setResizable(false); exclusiveWidnow.activate(); document.body.appendChild(exclusiveWidnow); EventManager.addDoradoEvent(exclusiveWidnow, "beforeHide", function(subWindow) { if (!confirm("确实要关闭吗?")) { throw new AbortException(); } } ); } exclusiveWidnow.show(true, true);
创建Jsp页面
生成Jsp页面以后再编辑一下布局,最后结果如下:
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="http://www.bstek.com/dorado" prefix="d" %> <html> <body style="margin: 0; overflow: hidden"> <d:View config="SubWindow"> <d:Layout type="border" padding="0"> <d:Pane position="top"> <d:SubWindow id="windowToolbar" title="操作按钮" width="100%" draggable="false" resizable="false" showMinimizeButton="true" showMaximizeButton="true" showCloseButton="false"> <d:Button id="buttonNewWindow1" /> <d:Button id="buttonNewWindow2" /> <d:Button id="buttonCloseAll" /> <d:Button id="buttonShowExclusiveWindow" /> </d:SubWindow> </d:Pane> <d:Pane position="center"> <d:SubWindow id="windowContent" title="工作区" width="100%" height="100%" draggable="false" resizable="false" showMinimizeButton="false" showMaximizeButton="true" showCloseButton="false"> <div id="windowContainer" style="width: 100%; height: 100%; overFlow: auto"> </div> </d:SubWindow> </d:Pane> </d:Layout> </d:View> </body> </html>
查看运行效果
启动服务器后,浏览效果如下:
可以通过页面上部的四个Button进行相关操作。
知识点
本示例知识点主要是SubWindow。关于SubWindow,可以参考《dorado 5 组件详解 1.1》的第二部分C部分的第1节。