asp.net关闭窗体时执行的代码写在哪里???

cn780620 2007-08-31 02:39:38
我有一个框架集对应3个窗体
在调试时,关闭框架集窗体时需要修改数据库里的信息,
请问我需要把:修改数据库信息的代码写在哪里????
写在Global.asax下
protected void Session_End(Object sender, EventArgs e)
{
SqlConnection con=new SqlConnection(@"workstation id=7F595D0BD5C9464;packet size=4096;user id=sa;pwd=sa;data source=7F595D0BD5C9464;persist security info=False;initial catalog=Chat");
con.Open();
SqlCommand com=new SqlCommand("update ChatTable set ZaiXian='0' where Name='"+Session["UserName"].ToString()+"'",con);
com.ExecuteNonQuery();
con.Close();
}里和
protected void Application_End(Object sender, EventArgs e)里
都没有效果,数据库并没有别修改

请高手帮忙谢谢


...全文
1076 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
vrhero 2007-08-31
  • 打赏
  • 举报
回复
当客户关闭框架集时...服务器根本不知道...这是HTTP决定的...

如 Jinglecat 所说 “应该重新考虑策略,比如自动过期 ....”
cn780620 2007-08-31
  • 打赏
  • 举报
回复
我做的程序是一个框架集包含3个窗体的,
想通过关闭框架集来进行对数据库的修改.
(PS是一个聊天程序,当关闭框架集时,说明本人离线了,所以要把数据库
的在线状态改为离线状态).
有什么好的方法吗?
地下室小红叔 2007-08-31
  • 打赏
  • 举报
回复
如楼上
Jinglecat 2007-08-31
  • 打赏
  • 举报
回复
你可以在

// js
window.onunload = function() {
// 这里通过 AJAX 请求服务器
}

但是,这并不是可取的方法,因为此时你窗体已经关闭了,你无法确定所发送的请求是否真的成功了,假如不成功如何处理?

应该重新考虑策略,比如自动过期 ....
tds__609 2007-08-31
  • 打赏
  • 举报
回复
是关闭整个框架还是关闭框架内的某个页面啊?
cn780620 2007-08-31
  • 打赏
  • 举报
回复
无法准确捕获窗体关闭!!!!!!!!

谁可以帮我想想有没有其他方法那????
我不想用添加一个关闭按钮事件来写.
谢谢了
活靶子哥哥 2007-08-31
  • 打赏
  • 举报
回复
无法准确捕获窗体关闭
igelf 2007-08-31
  • 打赏
  • 举报
回复
晕 <body onunload="post()"> 这样不行吗?
cn780620 2007-08-31
  • 打赏
  • 举报
回复
脚本是新建立一个js.js把
function post()
{
var url ="WebService.asmx/SessionEnd";
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.Open("POST",url,false, "","") ;
}

window.attachEvent("onunload", function(){ post(); });
粘贴就行了吗?可是window后面都点不出来啊???
请帮分析下谢谢

cn780620 2007-08-31
  • 打赏
  • 举报
回复
我新建立了一个服务
1 建立一服务,如webservice.asmx
新建一个方法
如 :

[WebMethod]
public void SessionEnd()
{
SqlConnection con=new SqlConnection(@"workstation id=7F595D0BD5C9464;packet size=4096;user id=sa;pwd=sa;data source=7F595D0BD5C9464;persist security info=False;initial catalog=Chat");
con.Open();
SqlCommand com=new SqlCommand("update ChatTable set ZaiXian='0' where Name='"+Session["UserName"].ToString()+"'",con);
com.ExecuteNonQuery();
con.Close();

}
我给的是void无返回值
2.建立了一个脚本跟你的一样
3.把<script language="javascript" type="text/javascript" src="js.js"></script>
加在了框架集HTML的开头了,但是还是没有效果,不知道什么原因.......
ken_flash 2007-08-31
  • 打赏
  • 举报
回复
试一下去,顶楼上的
zyug 2007-08-31
  • 打赏
  • 举报
回复
这个建议你用脚本+服务来做.

1 建立一服务,如webservice.asmx
新建一个方法
如 :

[WebMethod]
public string SessionEnd()
{
SqlConnection con=new SqlConnection(@"workstation id=7F595D0BD5C9464;packet size=4096;user id=sa;pwd=sa;data source=7F595D0BD5C9464;persist security info=False;initial catalog=Chat");
con.Open();
SqlCommand com=new SqlCommand("update ChatTable set ZaiXian='0' where Name='"+Session["UserName"].ToString()+"'",con);
com.ExecuteNonQuery();
con.Close();

}

2 .用脚本得到unload事件并且去调用该服务

为了简单,这里使用post去调用服务

新建一个 js.js的文件

内容如下

function post()
{
var url ="WebService.asmx/SessionEnd";
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.Open("POST",url,false, "","") ;
}

window.attachEvent("onunload", function(){ post(); });

3 .在要使用的地方调用它

如a.aspx中
<script language="javascript" type="text/javascript" src="js.js"></script>

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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