功能需求:有A B 两个页面,A 为父页面,B 为弹出页面。1)A 页面上有DG ,第一次 进入的时候 DG 中的没有值。
   
2)点击A 页面上的一个按钮弹出B 页面,在B中进行相应的操作之后 B 关闭,并同时刷新A 页面,
   使得DG 中有值。3)当A 中的DG 有值后,进行编辑 的时候,发现如果没有在 ispostback 下绑定DG 的话,编辑状态  之  下是得不到 更改后TExtbox 中的值。
  http://community.csdn.net/Expert/topic/4813/4813033.xml?temp=.933758

解决方案 »

  1.   

    针对 1 ,2 功能。
      我在A中:

    private void Page_Load(object sender, System.EventArgs e)
    {
       #region 弹出页面返回值、刷新主页面
       if ( Request.QueryString["Flag"] != null)
       {
    Txt_PO_NO.Text  =Request.QueryString["PO"].ToString();
             DG_Bind();  // 绑定DG 方法
        }
       #endregion
      
      #region 第一次加载页面初始化
      if (!IsPostBack)
      {
        if (Txt_PO_NO.Text.Length==0)
        {
           Txt_PO_NO.Text  =System.DateTime.Now.ToString("yyyyMMddhhmmss");
        }
      }
     #endregion
    }
      

  2.   

    在 弹出的B中我通过刷新A 窗体,并传递相应的参数。
    private void IBT_Close_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {
    string Str_Url="";
    Str_Url="window.opener.location='/CRM" + formid.Text + ".aspx?Flag=false" + "&PO=" + this.Txt_PO_NO.Text + "&PODate=" + Txt_Date.Text + "'" ;
    Response.Write("<script language='JavaScript'>"+"\n");
    Response.Write(Str_Url +"\n");
    Response.Write("window.close()");
    Response.Write("</script>"+"\n");
    }
      

  3.   

    1,2 功能是解决了。但是在刷新A之后,编辑DG 的时候出现了 
    取不到更改之后 textbox 的值,
    我也知道原因是没有放入到 !ispostback  中所,引起的,
    如果要实现以上的3个功能,如何实现比较好》》》》》》》》现在这个问题已经困扰我好几天了。如何解决??
      

  4.   

    以前做过类似的,不知道是不是你想要的效果.. 
    ----------------------------------------
    页面A - 前台
    -----------------------------------<HTML>
    <HEAD>
    <title>InStockOrderDetail</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    <script language="javascript">
    // 选择供应商对话框
    function SelectProvider()
    {
    var ReturnValue = window.showModalDialog("SelectProvider.aspx",null,'status=0;DialogWidth=420px;DialogHeight=400px;scroll=0');

    if(ReturnValue == null || ReturnValue == undefined)
    {
    return false;
    }
    else
    {
    window.Form1.hideProviderCode.value = ReturnValue[0];
    window.document.getElementById("ProviderName").innerText = ReturnValue[1];
    window.Form1.hideProviderID.value = ReturnValue[2];
    }
    }
    </script>
    </head>
    <body>
    <form id="Form1" method="post" runat="server"><INPUT id="hideProviderCode" type="hidden" runat="server"> <INPUT id="hideProviderID" type="hidden" runat="server">
    <asp:TextBox id="ProviderName" runat="server" Width="150" ForeColor="DimGray" ReadOnly="True"></asp:TextBox>&nbsp;
    <asp:button id="Btn_SelectProvider" runat=server text="选择">    ......
              <asp:datagrid id="dg" runat=server ....>
        ......</form>
    </body>
    </html>----------------------------------
    页面A - 后台
    ----------------------------------
    protected void Page_Load(object sender, System.EventArgs e)
    {

    this.Btn_SelectProvider.Attributes.Add("onclick","javascript:return SelectProvider();");
    }protected void Btn_SelectProvider_Click(object sender, System.EventArgs e)
    {
    if(this.hideProviderCode.Value != string.Empty)
    {
    DataTable TempTable = GetNewData(this.hideProviderCode.Value);

    this.dg.DataSource = TempTable;
    this.dg.DataBind();
                                        // this.ViewState["Table"] = TempTable;

    }
    }
    -----------------------------------------------
    B页面 - 后台(SelectProvider.aspx.cs)
    -----------------------------------------------protected void Cancel_Click(object sender, System.EventArgs e)
    {
    this.Response.Write("<script language=\"javascript\">window.close();returnvalue=null;</script>");
    } protected void ok_Click(object sender, System.EventArgs e)
    {
    if(this.dgProviderList.SelectedIndex == -1)
    {
    this.Response.Write("<script language=\"javascript\">window.close();returnvalue=null;</script>"); 
    }
    else
    {
                    Response.Write("<script language=javascript>arrayObj = new Array(2);arrayObj[0]='"+
    this.dgProviderList.SelectedItem.Cells[2].Text.Trim() +"';arrayObj[1]='"+ 
    this.dgProviderList.SelectedItem.Cells[3].Text.Trim() +"';arrayObj[2]='"+ 
    this.dgProviderList.SelectedItem.Cells[1].Text.Trim() +
    "';window.close();returnValue=arrayObj;</script>");
    }

    }
      

  5.   

    主要是为 "Btn_SelectProvider" 增加了二个Click事件,
    一个是客户端的[javascript],
    另一个是服务器端的... 客户端负责返回值,并根据返回结果判断是否提交到服务端处理.
    注意这句: javascript:return SelectProvider();如果客户端通过判断将提交窗体,即执行服务端的Click事件.
    注意这句: protected void Btn_SelectProvider_Click(object sender, System.EventArgs e)...... 我想这样处理应该是理想的方法 ...
      

  6.   

    谢谢 include_me(头文件)我试一下。