您的位置:首页 > 其它

弹出的模态窗口如何访问父窗口的变量

2010-02-06 14:10 316 查看
场景描述:父页面有个列表,选中一行就弹出一个模态窗口,根据不同的操作,父页面将刚点过的行的按钮变灰。

父页面:

<head runat="server">

<script language="javascript" type="text/javascript">

   var clearData;
var tmpControllerId; //用于存储当前点击的行号
// 弹出明细窗口
function ShowDetail(url, id) {
var title = "工时审批";
var reValue = ShowWindow(url, 1000, 700, 0, title); //弹出模态窗口
// 去掉变灰功能
tmpControllerId = id;
}

</script>

</head>
<body>

<form>

....

<asp:HiddenField runat="server" ID="hidCheckBoxId" Value="" /> //隐藏域用于保存之前选中的行

<script language="javascript" type="text/javascript">
var idS = document.getElementById("hidCheckBoxId").value;
// clearData 没定义或为false表示审批未通过,就不用变灰
if (clearData == undefined || !clearData) {
idS = idS.replace(tmpControllerId, "");
idS = idS.substr(0, idS.length - 1);
}

if (idS != undefined && idS != "") {
var arrId = idS.split(';');
for(var i = 0; i < arrId.length; i++) {
if (arrId[i] == "") {
continue;
}

var objBox = document.getElementById(arrId[i]);
objBox.disabled = "disabled";

var objBtnId = arrId[i].replace("chkSelect", "lbtnApprove")
var objBtn = document.getElementById(objBtnId);
objBtn.disabled = "disabled";
objBtn.onclick = function() { return false; }
}
}
document.getElementById("hidCheckBoxId").value = idS;
</script>

</form>
</body>

子页面:

<head runat="server">
<script language="javascript" type="text/javascript">
function ControlParentController(result) {
window.dialogArguments[2].clearData = result;
}

</script>

</head>

...

子页面根据用户不同的操作,就给父页面的clearData 赋值,父页面在根据clearData 的值决定是否需要将刚选的行的按钮变灰。

弹出模态窗口的方法:

// 参数分别为:文件URL, 宽度, 高度, 是否有滚动条(还可以改变大写)
// 此函数解决了模式对话框中打开的窗口提交时弹出新页面的问题,使用到了ModelDialogFrame.htm文件
function ShowWindow(szUrl,iWidth,iHeight,bScroll, szTitle){
if (iWidth == null) iWidth = 0.95;
if (iHeight == null) iHeight = 0.7;

var width,height;

if (iWidth>1)
{
width = iWidth;
height = iHeight;
}
else
{
width = screen.availWidth * iWidth;
height = screen.availHeight * iHeight;
}
var feature = "dialogHeight: " + height + "px; dialogWidth: " + width + "px; dialogTop: px; dialogLeft: px; edge: Sunken; center: Yes; help: No; scroll:auto;";
if (bScroll == 1 )
{
feature += "resizable: Yes; status: Yes;";
}
else
{
feature += "resizable: No; status: No;";
}
var r = Math.random() + Math.random();
var frameUrl = "/WorkCost/js/ModalDialogFrame.htm?r=" + r;
var args = new Array(szUrl, szTitle, window);

return window.showModalDialog(frameUrl, args, feature);
}

ModelDialogFrame.htm 源码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>

<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="ProgId" content="VisualStudio.HTML">
<meta name="Originator" content="Microsoft Visual Studio .NET 7.1">

</head>
<body>
<iframe id="myframe" src="" width="100%" height="100%" FRAMEBORDER="0"></iframe>
</body>
<script language=javascript>
<!--
if ( window.dialogArguments[0] != undefined )
{
document.getElementById('myframe').src=window.dialogArguments[0];
document.title= window.dialogArguments[1];
}
else
{
document.getElementById('myframe').src=window.dialogArguments;
}
//-->
</script>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: