父窗口:a.aspx
    其中有一文本框:txtCPDM,输入0000则弹出codequery.aspx网页(已实现),代码为:
Protected Sub txtCPDM_TextChanged(sender As Object, e As EventArgs) Handles txtCPDM.TextChanged
        If txtCPDM.Text = "0000" Then Response.Write(" <script> window.open( 'codequery.aspx','产品代码查询', 'height=200, width=640, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no'); </script> ")    End Sub子窗口:codequery.aspx
  其中有一个按钮btnQRXZ,一个标签控件lblCPDM,要实现点击按钮后,将标签lblCPDM的text属性值传回a.aspx,并改变txtCPDM的text属性值,目前代码如下:
   Protected Sub btnQRXZ_Click(sender As Object, e As EventArgs) Handles btnQRXZ.Click
        Dim scriptstr As String
        scriptstr = " <script> window.opener.document.getElementById('txtCPDM').value= '" & lblCPDM.Text & " '; " & " </script> "
        Page.ClientScript.RegisterStartupScript(Me.GetType(), "return ", scriptstr)
        Page.ClientScript.RegisterStartupScript(Me.GetType(), "close ", " <script> top.opener=null;top.close(); </script> ")
    End Sub但运行代码后出现错误:Microsoft JScript 运行时错误: 无法设置属性“value”的值: 对象为 null 或未定义请大虾们指点,十分感谢!

解决方案 »

  1.   

    父窗体设置一个方法:
    function setValue(val)
    {
    document.getElementById("txtCPDM").value =val ;
    }子窗体通过opener对象访问父窗体的方法:
    后台调用: if(opner){opener.setValue('.....'); window.close();}
      

  2.   

    设公共变量类(假设为a),关闭codequery.aspx
    页面前执行刷新a.aspx页面,在a.aspx页面load里判断a值是否有值,有则给文本框赋值并清空a变量
    试试?
      

  3.   

    其实很简单,比如刚开始是first.aspx页面,
    你打开的时候是 <a href="first.aspx?a=234&b=456"></a>
    添加完数据你再 代码里写个response.redirect("first.aspx?a=234&b=456");
    这样就数据刷了啊
      

  4.   

    目前遇到的问题:
    1、IE9下面报错
    2、IE6下面可以运行成功,但如果父页面为使用嵌套模板页的网页就不起作用
    运行环境:IE6、VB.net ASP.net
    请大侠帮忙指点一二目前全部代码未修改,仍未最初的代码
      

  5.   

    http://blog.csdn.net/michaelgong/article/details/6399780
      

  6.   

    能不能用VB.net写出来参考呢?谢谢