在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;
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;
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) 谢谢!
谢谢!
第一,.net的web按钮需要提交后才执行,而执行结果输出为html,所以在服务器它执行完后把那个脚本返回给客户端,客户端才弹出窗口。
第二,我不知道你要做什么,要做到你说的功能必须早绑定,也就是说按钮和脚本应该是第一时间存在的。而不是通过if去动态绑定
如果在Load_page事件中绑定的话,那么我一点击Button1按钮时就会弹出WebDialogBox.aspx页了。这跟我的想法不一致。我是想当符合某条件时才
弹出它。
如果按你的想法应该怎样绑定它?
程序比需等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);
}
}
}
就像这样if(条件)
{
msg();
return;
}
msg是向Client写脚本,所以页面完成刷新才会知道msg写入的是script,所以在msg之后就加上return
老大,我是菜鸟,详细一点。 FlashElf(銘龘鶽) 的解决办法很好,但是又出现了一个新问题,此新问题就是
对话框WebDialogBox.aspx不是模式的。怎样解决它?
http://dev.csdn.net/article/27/27760.shtm
showModalDialog
open 不行showModalDialog 的帮助到网上一招一大堆