一个大窗口A,里面有个datagrid,一个按钮“条件”。点击“条件”后出现另一个窗口B,在B里输入条件并点击“确定”,A里面的datagrid就会出现相应的结果。
我有两个地方不明白。1)点击“确定”后,怎样才能把条件(一个字符串)传到A?
2)当A得到这个条件字符串后,怎样才能让页面刷新?急,5点前能解决100分相赠。

解决方案 »

  1.   

    如果弹出窗口是 modalDialog:
    1.  在弹出窗口点击确定的时候,把要返回的字符串用 window.returnValue = "字符串值"; 返回父窗口;
    2.  当父窗口得到这个返回值了,把这个返回值放到一个隐藏的Text控件中,可以用hidden控件,也可以用asp:textbox控件,后者加上 style="Display:none"即可;然后触发datagrid的绑定事件;这里你可以采用一个隐藏的server button, 假设id是btnBind, 你就用 __doPostBack('btnBind','')触发,在这个按钮的Click事件中通过隐藏的textbox取得条件,然后绑定datagrid.如果是用 window.open 打开窗口:
    1. 在父窗口中加入一隐藏Text控件,如上用asp:textbox,假设id是txtCondition;
    2. 在确定时候用 window.parent.document.all.txtCondition.value = "字符串"; 
    3. 然后如上,利用隐藏的btnBind触发绑定事件。
      

  2.   

    点击“条件”后出现另一个窗口B :  this.Response.Redirect("b.aspx");
    在B里面写脚本,BUTTON 和 TEXTBOX都用客户端的:
                        function a()
     {
     var tiaojian = window.document.all('tiaojian').value
     window.location = "a.aspx?tiaojian="+tiaojian+"";
     }
    这个时候已经转到A页面了,在Page_load接收文本框里的数据:
    string tiaojian = Request.QueryString["tiaojian"];
    你取到这个tiaojian 之后跟着执行你的存储过程,或是别的代码.你试试.
      

  3.   

    楼上的已经解释的很详细了,有一点需要说明,“当A得到这个条件字符串后,怎样才能让页面刷新?”,你可以使用一种类似强制客户端回传(PostBack)的方法来实现,具体请参考:Forcing a Postback using ASP.Net and JavaScript.
    http://www.cnblogs.com/fengzhimei/archive/2004/03/16/37686.aspx
      

  4.   

    to:galepeng(天天向上(我要新生活)) 
    可能是我没说清楚。
    Response.Redirect("b.aspx");后A窗口就消失了。
    我现在是 
    Response.Write("<script language=javascript>window.open('Fillter.aspx', '', 'top=80; left=150; height=150,width=430,status=no,toolbar=no,menubar=no,location=no')</script>")
      

  5.   

    在A页定义一个隐藏的Button ID 为 lnkRefresh
    然后在DataGrid的ItemDataBind() 时间里面给你的按钮“条件”添加
    script = "showModalDialog('dd.aspx',window,'');" ;
    按钮“条件”.Attributes.Add("ondblclick", script) ;然后在B页面完成操作后确定按钮添加string scrit="<script language='javascript'> window.dialogArguments.__doPostBack('lnkRefresh' ,''); </script>" ;
    Page.RegisterStartupScript("ckck",scrit) ;
    Page.RegisterStartupScript("close","<script language='javascript'>window.close()</script>") ;
    这样就可以完成 B刷新A
    你要显示数据,建议用数据库做中间媒介,A也刷新时再读数据帮定DataGrid
      

  6.   

    那你把这个方法改一下,   
           function a()
     {
     var tiaojian = window.document.all('tiaojian').value
     window.opener.location = "a.aspx?tiaojian="+tiaojian+"";
                 window.close();
     }
    //刷新A的同时关掉了B页面,不知道是不是你想要的.
      

  7.   

    不好意思,我太菜了。还没搞定。各位高手能不能给我做个简单例子看看啊。
    以下面的两个窗体为模板,其中WebForm1为主窗口,点击“条件”后出现小窗口WebForm2。在WebForm2的文本框输入文字后,点击“确定”,小窗口消失。WebForm1中的文本筐出现WebForm2中输入的文字,并刷新。(实际问题中有datagrid,所以要刷新重新绑定)。WebForm1.aspx
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="MTRC.OID.Web.WebForm1"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm1</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
    <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <FONT face="宋体">
    <asp:TextBox id="txtResult" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"></asp:TextBox>
    <asp:Button id="btnCondition" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 45px" runat="server" Text="条件"></asp:Button></FONT>
    </form>
    </body>
    </HTML>
    -------------------------------------
    WebForm1.aspx.vb
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Private Sub btnCondition_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCondition.Click
            Response.Write("<script language=javascript>window.open('webform2.aspx', '', 'top=80; left=150; height=150,width=430,status=no,toolbar=no,menubar=no,location=no')</script>")
        End Sub
    ---------------------------------
    WebForm2.aspx
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm2.aspx.vb" Inherits="MTRC.OID.Web.WebForm2"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm2</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
    <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <asp:TextBox id="txtCondition" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"></asp:TextBox>
    <asp:Button id="btnSubmit" style="Z-INDEX: 102; LEFT: 13px; POSITION: absolute; TOP: 49px" runat="server" Text="确定"></asp:Button>
    </form>
    </body>
    </HTML>
    ---------------------------重酬!
      

  8.   

    简单,一句话:
    Page.RegisterClientScriptBlock("refresh","<script>window.opener.location=window.opener.location</script>");
      

  9.   

    to Asam3000(浪子阿三) 
    这一句话写在哪?
      

  10.   

    参考一下:用javascript打开一个窗口,javascript:var win = window.open('../workonline/checkrl.aspx?id={0}','_blank','top=160,left=190,width=645,height=411');"传回值到父窗口的方法,关闭本窗口,刷新父窗口,重新绑定datagrid 
    window.opener.location.href='neworder.aspx?id="+e.Item.Cells[0].Text+"&id1="+e.Item.Cells[1].Text+"';window.opener.location.reload();self.close();";
      

  11.   

    to  liuvb(超级大笨狼) 
    我用你的window.opener.location.href='neworder.aspx?id="+e.Item.Cells[0].Text+"&id1="+e.Item.Cells[1].Text+"';window.opener.location.reload();self.close();";好象不行啊。出错,说“不重新发送信息,则无法刷新网页”