在WebDialogBox.aspx.cs中
ButtonOK_click()
{  Session.Add("msgReturn","Y");
   self.close();
}
ButtonCancel_click()
{  Session.Add("msgReturn","N");
   self.close();
}紧随if(条件)msg();  后面语句是:
string ch=Session["msgReturn"].toString();  
if(ch=="N") return;

解决方案 »

  1.   

    有如下代码:
    public class WReptFlt : System.Web.UI.Page
    {
        ......    private void Page_Load(object sender, System.EventArgs e)
        {
        }
        public void msg()
        {
    string clientScript; 
             clientScript="<script language='javascript'>window.open
                           ('WebDialogBox.aspx')</script>";
    Response.Write(clientScript);
        }    private void Button1_Click(object sender, System.EventArgs e)
        {
             ......
             if(条件) msg();
             string ch=Session["msgReturn"].toString();
             if(ch=="N") return;
             ......
        }
        
        ......
    }在WebDialogBox.aspx.cs中
    ButtonOK_click()
    {  Session.Add("msgReturn","Y");
       RegisterClientScriptBlock("test","<script>self.close()</script>");
    }ButtonCancel_click()
    {  Session.Add("msgReturn","N");
       RegisterClientScriptBlock("test","<script>self.close()</script>");
    }为什么只有Button1_Click()中的所有代码执行完了以后才会弹出WebDialogBox.aspx页。
    如果要使当if(条件)为true时就能立刻弹出WebDialogBox.aspx页该采取什么样的方法?
    (其实WebDialogBox.aspx是由提示信息和一个“确定”按钮和一个“取消”按钮组成,当
     用户按“确定”按钮,则继续执行if(条件)后面的语句,按“取消”按钮则Button1_click() return)  谢谢!
      谢谢!
      

  2.   

    很简单,web页的执行方式跟程序不同。
    第一,.net的web按钮需要提交后才执行,而执行结果输出为html,所以在服务器它执行完后把那个脚本返回给客户端,客户端才弹出窗口。
    第二,我不知道你要做什么,要做到你说的功能必须早绑定,也就是说按钮和脚本应该是第一时间存在的。而不是通过if去动态绑定
      

  3.   

    楼主回答leisang(我自飘零)老大:
       如果在Load_page事件中绑定的话,那么我一点击Button1按钮时就会弹出WebDialogBox.aspx页了。这跟我的想法不一致。我是想当符合某条件时才
    弹出它。
    如果按你的想法应该怎样绑定它?
      

  4.   

    看不懂什么意思……晕,你的代码是那个文件里的?确定按钮是哪里的?Button1_Click是不是确定按钮的动作?
      

  5.   

    web 
    程序比需等Server端都处理完了才可以向客户端发送消息。但在 DotNet 下用多线程也是可以的,但之后的的操作,
    不可以使用
    Response.Write
    这样的需要在客户端显示数据的函数,或数据绑定等
    演示:using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Data.OleDb;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Text;
    using System.Runtime.InteropServices;
    using System.Diagnostics;
    using System.Web.Caching;
    using System.Threading;
    using System.IO;public class WReptFlt : System.Web.UI.Page
    {
    private void Page_Load(object sender, System.EventArgs e)
        {
        }
        public void msg()
        {
    string clientScript; 
             clientScript="<script language='javascript'>window.open('WebDialogBox.aspx')
                           </script>";
    Response.Write(clientScript);
        }    private void Button1_Click(object sender, System.EventArgs e)
        {
             ......
             if(条件) msg();
             ......
    System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc),this);
    .....
        }
         static void ThreadProc(Object stateInfo) 
    {
    WReptFlt test= (stateInfo as WReptFlt);
    //你的其他操作
    //这个是为了看到效果,调试模式会显示 i
    for(int i=0;i<10000;i++)
    {
    Debug.WriteLine(i);

    }
    }
    }
      

  6.   

    你需要在if(条件) msg();这里加一个return;
    就像这样if(条件)
    {
        msg();
        return;
    }
      

  7.   

    if(条件) msg();
    msg是向Client写脚本,所以页面完成刷新才会知道msg写入的是script,所以在msg之后就加上return
      

  8.   

    而且window.open打开的页面也不是模式对话框!
      

  9.   

    楼主回答: lxcc(虫子) 老大!怎样使它变成模式对话框?
               老大,我是菜鸟,详细一点。           FlashElf(銘龘鶽) 的解决办法很好,但是又出现了一个新问题,此新问题就是
               对话框WebDialogBox.aspx不是模式的。怎样解决它?
      

  10.   

    showModalDialog,显示模式窗口,但是仍然加上return;
    http://dev.csdn.net/article/27/27760.shtm
      

  11.   

    用模式的必须
    showModalDialog
    open 不行showModalDialog 的帮助到网上一招一大堆