子窗口获取父窗口的值:
子窗口中前台加了HiddenField控件来存放父窗口的textbox控件中的值子窗口的前台代码,如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ViewUserTopMes.aspx.cs" Inherits="ViewUserTopMes" %><!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>
  <script type="text/jscript" language="javascript">
  window.onload = GetParentValue;  function GetParentValue()
  {
      document.getElementById("HiddenField1").value =parent.document.getElementById("TxtReachUser").value;
  }
   
  </script>
</head>
<body >
  <form id="fom1">
  <asp:HiddenField ID="HiddenField1" runat="server" />  <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
  </form>
</body>
</html>
 字界面的CS代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;public partial class ViewUserTopMes : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
  Response.Write("<script>alert('" + HiddenField1.Value.ToString() + "')</script>");
  }
  protected void Button1_Click(object sender, EventArgs e)
  {
  Response.Write("<script>alert('" + HiddenField1.Value.ToString() + "')</script>");
  }
 }  问题是:Page_Load中获取不到HiddenField1.Value中的值,页面加载后,点击Button1后,才能看到HiddenField1.Value中的值,请问有没有好的办法?要求:必须用HiddenField控件解决,暂时不考虑用session,request等方法。谢谢!
借用AJAX是不是能解决呢?

解决方案 »

  1.   

    本人知道页面生命周期的顺序。明白Page_Load比window.onload先发生。有变通的办法吗???
      

  2.   

    用JS轻松搞定,
    为什么要想得那么复杂呢.....window.parent.obj.value = thisObj.value;
      

  3.   

    <form id="fom1" >标签少加了runat="server"。
      

  4.   

    我需要在**.aspx.cs中获取父页面中的值呀
      

  5.   

    没有办法,LZ把js和.net的层次搞混了,.net的代码是运行在服务器上的,js的代码是运行在客户端上的,就是说先执行完.net代码后就会去执行js的代码
      

  6.   

    可用在URL后面加参数或者按钮触发时间提交一次
      

  7.   

    LZ 你的子窗口是从父窗口创建出来的吗 
    如果是 那就好办多了
    // 假设父窗体有ID为controllerID的控件  那么获取父窗体控件的方法如下
    <script>
      var p = window.dialogArguments;
      var tempUserIDs = p.document.getElementById("controllerID").value; //从主窗体获取隐藏域的值
    </script>
      

  8.   

    是父窗口创建的子窗口,主要是子窗口**aspx.cs代码中如何得到父窗口客户端的值?
      

  9.   

    JS最后连接字符串,如 数据1#数据2#数据3#数据4#数据5#(这些可以在循环里面做) 然后付给一个隐藏控件最后用__doPostBack('btnOk','');方法调用后台事件
    例如:( C# code<asp:Button id = "btnOk" runat = "server" OnClick = "btnOK_Click" />
    )在后台事件里面去拿那个隐藏控件的值,然后再用String.Split('#');还原数据
      

  10.   

    http://topic.csdn.net/u/20091027/12/aa1e116a-8aa6-43a6-b259-47204863eebb.html
      

  11.   

    什么是“父子窗口”呢?本来简短的一句话就能全面的东西,总是因为丢三落四而影响设计。Anyway,父窗口总之是要产生子窗口的url并且推送给浏览器,那么在url上以参数的形式传送就行了。不会是被现在的什么asp.net mvc之类的的给整的,asp.net程序员连基本地、在url上传送参数的方法都不懂了吧?!
      

  12.   

    呵呵。SP1234能回答我的问题,我非常高兴。1、不是被as.net mvc整成这样;
    2、主要是子页面需要获取父页面太多的控件中的数据,而且数据的组成格式非常复杂。若全采用URL传递数据,当然可以,但总感觉这种方式不是那么好。