我要实现的功能是,在单击主页面的一个textbox时,通过showModalDialog()弹出一个子窗口,再将此子窗口下的一个值返回给主页面。我的代码如下所示。问题是当我在弹出的子窗口中设置值并点击确认后 此值并不能返回给主页面,也不会关闭(我设置的有让他关闭的功能)。
如果哪位老兄有原码 粘上来就更好了 小弟给你鞠躬了。呵呵
谢谢了先!^_^parent.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="fu.aspx.cs" Inherits="fu" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script type="text/javascript">function getlqlb()
//这里定义那个弹出窗口的JS。
{
var getlqlb = showModalDialog("son.aspx", "newwin", "dialogWidth:330px;dialogHeight:170px"); //接收从子窗口中传过来的值。
    if (getlqlb != null) 
    { 
          document.getElementById("<%=TextBox1..ClientID%>") .value=getlqlb; //将已接收的值写入textbox。
    }
    else
    {
        alert("No data Returned!");//如果传过来的值为空则弹出一个警告框。
    }
}
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server" onclick="getlqlb()"></asp:TextBox></div>
    </form>
</body>
</html>son.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="zi.aspx.cs" Inherits="zi" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <base target="_self" />
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> //显示一个文本框
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> //显示一个按钮
    </div>
    </form>
</body>
</html>son.aspx.csprotected void Button1_Click(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {this.RegisterStartupScript("JS", "<script language='javascript' type='text/javascript' defer='defer'>window.returnValue=document.getElementById(+'"+TextBox2+"').value;window.close();</script>");
        }
    }

解决方案 »

  1.   

    奇怪!!
    我经过测试发现 如果单纯建这两个简单的页面(页面内没有其他内容),则没有任何问题
    我把他们放到母版页中就不会显示了  而是提示showModalDialog()为空或不是对象!
    这又是为什么呢???
      

  2.   

    在子页面中设置一下:
    <body onload="window.returnValue=false;">
      

  3.   

    已解决!
    原因是 在母版页的contentplaceholder控件中的控件 在编译后重新设定了ID。而客户端的JS并不知道。所以应该在页面发送给客户端前就将所需要的控件找出来(具体可参考天轰穿的博客) 动态地加上JS事件就好了。