Page_Unload事件在页面载入的时候就执行了,为什么?我的代码如下,在载入页面以后,我打开数据库一看,status字段居然是离线,不可思议。protected void Page_Unload(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection("server=localhost;database=hex;uid=sa;pwd=");
        SqlCommand sqlcmd = new SqlCommand();
        conn.Open();
         sqlcmd.Connection = conn;
         sqlcmd.CommandText = "update messages set status='离线' where sid=" + id;
         sqlcmd.ExecuteNonQuery();
        conn.Close();
        conn = null;
     
    }

解决方案 »

  1.   

    你确定没有搞错?
    比如说,载入前就是离线,或者看错id对应的人了
    你把此id改成在线,再跑一下...
      

  2.   

    Page_Unload是刚进入页面,或者每次postback时都会首先执行的
    如果想在postback时执行上面代码 
    加上 
    if (this.IsPostBack)
    {
      SqlConnection conn = new SqlConnection("server=localhost;database=hex;uid=sa;pwd=");
            SqlCommand sqlcmd = new SqlCommand();
            conn.Open();
             sqlcmd.Connection = conn;
             sqlcmd.CommandText = "update messages set status='离线' where sid=" + id;
             sqlcmd.ExecuteNonQuery();
            conn.Close();
            conn = null;}
      

  3.   

    以下是page_load事件,如果我吧page_unload事件去掉,那么stauts字段的值便是“在线”,可是我打算在page_unload事件(关闭窗口)后将status字段的值变为“离线”,看看我的代码有没有错误。    int id;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                SqlConnection conn = new SqlConnection("server=localhost;database=hex;uid=sa;pwd=");
                SqlCommand sqlcmd = new SqlCommand();
                SqlDataReader datareader;
                string today = "";
                string firstsay = "客服:<br>&nbsp;&nbsp;&nbsp;&nbsp;你好。";
                string status = "在线";
                try
                {
                    conn.Open();
                    sqlcmd.Connection = conn;
                    today = System.DateTime.Now.ToString();
                    sqlcmd.CommandText = string.Format("insert into messages (msgs,stime,status) values('{0}','{1}','{2}')",firstsay,today,status);
                    sqlcmd.ExecuteNonQuery();
                    sqlcmd.CommandText = string.Format("select sid from messages where stime='{0}'", today);
                    datareader = sqlcmd.ExecuteReader();
                    if (datareader.Read())
                        id = datareader.GetInt32(0);
                    sqlcmd = null;
                }
                catch (Exception ex)
                {
                    Response.Write(ex);
                }
                finally
                {
                    conn.Close();
                    conn = null;
                }
            }
        }
      

  4.   


    如果是Page_Load就像这位仁兄这样加个if(this.IsPostBack)Page_Unload 这个事件,在2005有吗?小弟见识短没见过
      

  5.   

    我刚照着2楼的仁兄做了,页面打开后status字段的值是“在线”,但是关闭窗口后,status字段的值还是“在线”,也就是说关闭窗口没有触发page_unload事件
      

  6.   

    哦,刚才没仔细看
    你需要在关闭窗口时将数据库更改数据状态为离线,因为关闭窗口不会执行 Page_Load