现有A、B两个页面,运行A页面,点击上面一个按钮,此时弹出B页面,再B页面上有多个checkBoxList,用户选择后,点击B页面上的确定按钮,B页面关闭,此时A页面显示刚才用户在B页面上选择的checkBoxList的文本。请问除了Session之外还有什么好方法?

解决方案 »

  1.   

    类似http://www.aspxboy.com/private/showthread.asp?threadid=623
      

  2.   

    父子窗体可以通过JS直接传值,无需用到后台
    window.open可通过window.opener操作父窗体
    模式窗口可用returnValue
      

  3.   

    感觉二楼说的有道理.楼主真正要实现的,是父子层窗体控制值的问题,不用什么session之类的传,用二楼的方法,在网上搜一下,就OK了。
      

  4.   

    sorry` 我看差了 在四楼的回答是错误的.
    1搂 2楼 是一个意思.正解~
      

  5.   

    武眉博<活靶子.NET>
    ====================
    您这个例子我看过了,我要把弹出的页面上所有选中的checkBoxlist的值都传到父页面上,是不是应该在frame.html里写代码呢?
    如果不是请问那个frame有什么用?
      

  6.   

    我要返回的是多个值,要分开显示
    var win = window.showModalDialog这句是不是应该写成多个呀
      

  7.   

    给你一篇文章参考一下:http://user.qzone.qq.com/113620916/infocenter
      

  8.   

    不好意思.是这个:http://user.qzone.qq.com/113620916/blog/1192152881
      

  9.   

    Open方法:在弹出窗口中增加一个JS变量或隐藏控件,checkBoxlist每选择一个就改变这个控件的值,关闭时用我上面的方法将值回传,传参并执行父窗体中显示文本的方法
      

  10.   

    frame 防止 弹窗 弹两次的
    如果设置<base target="_self">那可以不用frame
      

  11.   

    如str="rd1;rd2"父窗口可用split操作
    比如取消选择rd2时,将str里的";rd2"替换成"";
      

  12.   

    在WebForm1.aspx 的某个事件中写入如下代码:Server.Transfer("WebForm2.aspx"); //传递页面对象
    接着就可以在WebForm2.aspx.cs中获取WebForm1的页面对象。
    if(Context.Handler is WebForm1) //判断传递过来的是否WebForm1,因为可能会有多个传递对象。    
    {                                             
    WebForm1 f1=(WebForm1)Context.Handler; //通过Context.Handler来创建一个WebForm1的页面对象,返 回一个object                                           
    Response.Write("Hey,I get it with Context Handler "+((TextBox)f1.FindControl("TextBox1")).Text+" 
    ");??      
    }                                              
    //最后通过调用WebForm1对象的FinControl()方法来查找WebForm1中名为"TextBox1"的一个文本控件,在此也可以换成其它的控件,不管查找的是哪一种控件,都必须将其强制转换为其类型,本示例中为TextBox,最后调用其属性Text,获取在TextBox1中的值,达到传值的效果。
      这种方法同样很灵活,可以传递多个页面对象,而不是传递值,因此当获取到页面对象的时候就可以获取此页面对象中的某些控件的值或其它的数据。
    (注:以上几种方法,除了Request.Form()这种传值方法使用的是HTML控件外,其它几种都是使用WEB控件)  2.  使用Application 对象变量
        Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。
    a.aspx的C#代码
    private void Button1_Click(object sender, System.EventArgs e)
    {
        Application["name"] = Label1.Text;
        Server.Transfer("b.aspx");
    }b.aspx中C#代码
    private void Page_Load(object sender, EventArgs e)
    {
        string name;
        Application.Lock();
        name = Application["name"].ToString();
        Application.UnLock();
    }
     4.  使用Cookie对象变量
        这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。a.aspx的C#代码
    private void Button1_Click(object sender, System.EventArgs e)
    {
        HttpCookie cookie_name = new HttpCookie("name");
        cookie_name.Value = Label1.Text;
        Reponse.AppendCookie(cookie_name);
        Server.Transfer("b.aspx");
    }b.aspx中C#代码
    private void Page_Load(object sender, EventArgs e)
    {
        string name;
        name = Request.Cookie["name"].Value.ToString();
    }