C#同行们:请教一个初学问题。在线等!

chinaybk 2004-08-28 09:00:01
有如下代码:
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();
......
}

......
}

为什么只有Button1_Click()中的所有代码执行完了以后才会弹出WebDialogBox.aspx页。
如果要使当if(条件)为true时就能立刻弹出WebDialogBox.aspx页该采取什么样的方法?
(其实WebDialogBox.aspx是由提示信息和一个“确定”按钮和一个“取消”按钮组成,当
用户按“确定”按钮,则继续执行if(条件)后面的语句,按“取消”按钮则Button1_click() return)

谢谢!
谢谢!


...全文
291 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
曲滨_銘龘鶽 2004-08-29
  • 打赏
  • 举报
回复
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);

}
}




}
neupioneer 2004-08-29
  • 打赏
  • 举报
回复
看不懂什么意思……晕,你的代码是那个文件里的?确定按钮是哪里的?Button1_Click是不是确定按钮的动作?
hiying 2004-08-29
  • 打赏
  • 举报
回复
很简单。一个是客户端,一个是服务器端,执行完了服务器端,才会执行客户端的东西
chinakyb 2004-08-29
  • 打赏
  • 举报
回复
楼主回答: lxcc(虫子) 老大!怎样使它变成模式对话框?
老大,我是菜鸟,详细一点。

FlashElf(銘龘鶽) 的解决办法很好,但是又出现了一个新问题,此新问题就是
对话框WebDialogBox.aspx不是模式的。怎样解决它?
曲滨_銘龘鶽 2004-08-29
  • 打赏
  • 举报
回复
用模式的必须
showModalDialog
open 不行

showModalDialog 的帮助到网上一招一大堆
lxcc 2004-08-29
  • 打赏
  • 举报
回复
showModalDialog,显示模式窗口,但是仍然加上return;
http://dev.csdn.net/article/27/27760.shtm
lxcc 2004-08-29
  • 打赏
  • 举报
回复
而且window.open打开的页面也不是模式对话框!
lxcc 2004-08-29
  • 打赏
  • 举报
回复
if(条件) msg();
msg是向Client写脚本,所以页面完成刷新才会知道msg写入的是script,所以在msg之后就加上return
Reeezak 2004-08-29
  • 打赏
  • 举报
回复
你需要在if(条件) msg();这里加一个return;
就像这样

if(条件)
{
msg();
return;
}
chinakyb 2004-08-28
  • 打赏
  • 举报
回复
楼主回答leisang(我自飘零)老大:
如果在Load_page事件中绑定的话,那么我一点击Button1按钮时就会弹出WebDialogBox.aspx页了。这跟我的想法不一致。我是想当符合某条件时才
弹出它。
如果按你的想法应该怎样绑定它?
leisang 2004-08-28
  • 打赏
  • 举报
回复
很简单,web页的执行方式跟程序不同。
第一,.net的web按钮需要提交后才执行,而执行结果输出为html,所以在服务器它执行完后把那个脚本返回给客户端,客户端才弹出窗口。
第二,我不知道你要做什么,要做到你说的功能必须早绑定,也就是说按钮和脚本应该是第一时间存在的。而不是通过if去动态绑定
chinaybk 2004-08-28
  • 打赏
  • 举报
回复
有如下代码:
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)

谢谢!
谢谢!

chinakyb 2004-08-28
  • 打赏
  • 举报
回复
如果问题阐述得不详之处请指出,我会再描述的。
qcny 2004-08-28
  • 打赏
  • 举报
回复
顶顶顶....
chinakyb 2004-08-28
  • 打赏
  • 举报
回复
来顶我,快快快!
chinakyb 2004-08-28
  • 打赏
  • 举报
回复
老大们:请指教!来顶顶!
chinaybk 2004-08-28
  • 打赏
  • 举报
回复
在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;


111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧