写了一个留言提示功能,大家给看看,还有没有更好的实现办法或者是BUG
请看代码和注释
第一页前台:
Code <script language="javascript" type="text/javascript">var xmlhttp;var d; timer=setInterval("ajax()",10000);function ajax() { if(window.ActiveXObject) { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open('GET', 'Default2.aspx?id=3', true); xmlhttp.onreadystatechange = callback; xmlhttp.send(null); } function callback() { if(xmlhttp.readystate == 4) { if(xmlhttp.status == 200) { d=xmlhttp.responseText; } } } </script> </head><body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDeleting="GridView1_RowDeleting"> <Columns> <asp:TemplateField HeaderText="ID"> <ItemTemplate> <asp:Label ID="Label2" runat="server" Text='<%# Eval("id") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:CommandField ShowDeleteButton="True" /> </Columns> </asp:GridView> <br /> <br /> <asp:Label ID="Label1" runat="server" Text="Label" BackColor="White" BorderColor="White"></asp:Label> </div>
第一页后台
Code private static int Record;//用来记录数据的行数,同Session["nuber"]进行比较,以确定,数据库是不是多了一行新的数据 //private static int nume = 0; protected void Page_Load(object sender, EventArgs e) { NewMethod(); int Number = Convert.ToInt32(Session["nuber"]);//得到数据库数据行数 if (Session["nuber"] != null)//判断Session是不是为空 { if (Number != Record)//判断是不是和记录(Record)相等,Record请看下边的解释 { //ii = Convert.ToInt32(Session["nuber"]); if (Number < Record)//判断是不是小于Record,如果小于则从新给他赋值,用来确定是不是删除过数据(可以不要) { Record = Number; } else { if (Number > Record)//判断是不是大于Record,如果大于就等于数据库中多了一条新的消息 if (Record > 0)//判断Record是不是等于0,因为刚开运行页面时Record是为0的 { int row = Number - Record;//获得多出了几条信息 Record = Number; Label1.Text = "您有新的消息!!("+row+")"; Label1.ForeColor = System.Drawing.Color.Blue; } else //如果不等于Record就重新赋值 { Record = Number; } } } } } private void NewMethod() { string id = "3"; OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=E:\shujuku\duan.mdb"); cn.Open(); OleDbCommand cm = new OleDbCommand("select id from duanxin where username='" + id + "'", cn); OleDbDataAdapter ca = new OleDbDataAdapter(); ca.SelectCommand = cm; DataSet ds = new DataSet(); ca.Fill(ds); ca.SelectCommand.ExecuteReader(); int i = Convert.ToInt32(ds.Tables[0].Rows.Count); cn.Close(); GridView1.DataSource = ds; GridView1.DataBind(); } protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { Label LbGV = (Label)GridView1.Rows[e.RowIndex].Cells[0].FindControl("Label2"); int GVid =Convert.ToInt32( LbGV.Text); OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=E:\shujuku\duan.mdb"); cn.Open(); OleDbCommand cm = new OleDbCommand(" delete from duanxin where id=" + GVid, cn); //OleDbDataAdapter ca = new OleDbDataAdapter(); //ca.SelectCommand = cm; //DataSet ds = new DataSet(); int i =cm.ExecuteNonQuery(); //得到被删除数据的行数 //ca.Fill(ds); //ca.SelectCommand.ExecuteReader(); Record -= i;//Record减去被删除数据的行数,用来确定记录数,防止当用户删除数据时,正好有人发来新的消息。 }}
第二页后台(用来查出数据库记录)
Code protected void Page_Load(object sender, EventArgs e) { string id = Request.QueryString["id"].ToString(); OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=E:\shujuku\duan.mdb"); cn.Open(); OleDbCommand cm = new OleDbCommand("select id from duanxin where username='" + id + "'", cn); OleDbDataAdapter ca = new OleDbDataAdapter(); ca.SelectCommand = cm; DataSet ds = new DataSet(); ca.Fill(ds); ca.SelectCommand.ExecuteReader(); int i = Convert.ToInt32(ds.Tables[0].Rows.Count); ss(i); Response.Write(i); } public void ss( int i) { Session["nuber"] = i;//记录检索出来的行数有多少,用以分别是不是有人发了新的消息 //Session["nuber2"]= }
转载于:https://www.cnblogs.com/tanxiao/archive/2008/08/13/1266918.html