window.opener.document.getElementById(...)' 为空或不是对

.net里用了一个父窗口和子窗口传值的JS,但父页面却得不到子页面传来的值,很纳闷,报错是说window.opener.document.getElementById('父窗口控件ID名')为空或不是对象。希望高手帮指点:

父页面

<%@ Page Language="C#" MasterPageFile="~/CMSMasterPage.master" AutoEventWireup="true"
    Inherits="ManageLogDataList" Title="Untitled Page" CodeBehind="ManageLogDataList.aspx.cs" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <script type="text/javascript">
         function showDialog() {
             window.open("UserSearch.aspx");
          
        }
   
    </script>
    <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
    &nbsp;<asp:Button ID="btnUserSearch" runat="server" Text="U"/>

</asp:Content>


父页面后台

public partial class ManageLogDataList : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        btnUserSearch.Attributes.Add("onclick", "this.form.target='_blank'");
        this.btnUserSearch.Attributes.Add("onclick", "showDialog()");

    }

}


子页面:他是父页面点击后重新打开一个新页面,再这个页面里做了一些操作,search了一些数据,然后选定一个值,打算返回给父页面

子页后台


protected void LinkButton_Command(object sender, CommandEventArgs e)
        {
            string userName = (string)e.CommandArgument;//这个是我再子页面得到的值,需要传到父页的值,这个值已经得到。
            Response.Write("<script type='text/JavaScript'> window.opener.document.getElementById('<%=txtUserName.ClientID %>').value = '" + userName + "';alert(window.opener.location.href);</script>");
                   
}

当我点击子页面上的button触发LinkButton_Command事件时,报错window.opener.document.getElementById('<%=txtUserName.ClientID %>')为空或者不是对象.



当我不清楚到底是哪地方出了问题,所以希望有此方面经验的人多多帮助,谢谢

你可能感兴趣的:(C++,c,UI,.net,Web)