我用的是vs2005
问题是 :现在有个查询手机号码的功能 点击查询的时候先把号码插入到一个表中 同时显示10秒倒计时 等到时间为0的时候就从另一个表中查询数据并显示出来 我之前用js写的只是时间到0的时候再插入数据同时查询数据 可是查询的结果为空 原因是后台的处理程序并没有那么快把插入的号码处理掉
页面代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title>手机号码查询</title> <style type="text/css"> body { font-size:small; } .bt { filter : alpha(opacity=0); display:none; } </style> <script language="javascript" type="text/javascript"> var t = 10;// 规定为10s function sarTime() { var phone = document.getElementById("<%=this.txtPhone.ClientID %>").value; if (phone == "") { alert("手机号码不能为空!"); return false; } else if (phone != "") { var re = /^1[3|4|5|8][0-9]/d{4,8}$/; if (!re.test(phone)) { alert("请输入正确的手机号码!"); return false; } else { if (t > 0) { document.getElementById("<%=this.lblMes.ClientID %>").innerHTML = "正在查询,请稍后...(" + t.toString() + ")"; t--; if (t == 8) {//执行一次即可 到这步的时候时间就不动了 document.getElementById("<%=this.Button1.ClientID %>").click(); } setTimeout("sarTime()", 1000); } else { document.getElementById("<%=this.btnSearch.ClientID %>").click(); t = 10; //重新赋值计算 } } } } </script></head><body> <form id="form1" runat="server"> <div style="text-align:left;">
<asp:Label ID="Label2" runat="server" Text="音乐盒查询" Font-Bold="True" Font-Size="Large"></asp:Label> <br /> <br /> <div> <asp:Label ID="Label1" runat="server" Text="请输入手机号码:"></asp:Label> <asp:TextBox ID="txtPhone" runat="server" Width="192px"></asp:TextBox> <input id="btnS" type="button" value="查询" οnclick="sarTime()" /> <asp:Button ID="btnSearch" runat="server" Text="" οnclick="btnSearch_Click" CssClass="bt" /> <asp:Button ID="Button1" runat="server" Text="" οnclick="Button1_Click" CssClass="bt" /> <br /> <asp:Label ID="lblMes" runat="server" ForeColor="Red"></asp:Label> <asp:GridView ID="gvPhone" runat="server" AutoGenerateColumns="False" onrowdatabound="gvPhone_RowDataBound" Width="801px" AllowPaging="True"> <RowStyle HorizontalAlign="Center" /> <Columns> <asp:BoundField DataField="createtime" HeaderText="查询时间" /> <asp:BoundField DataField="mobile" HeaderText="手机号码" /> <asp:BoundField DataField="tonecode" HeaderText="音乐盒编号" /> <asp:BoundField DataField="name" HeaderText="音乐盒名称" /> <asp:BoundField DataField="price" HeaderText="资费(分)" /> </Columns> <HeaderStyle BackColor="#9999FF" /> </asp:GridView> </div> </form></body></html>
后台代码
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using System.Data.SqlClient;using System.Configuration;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.lblMes.Text = "";//清空提示消息
} }
protected void Button1_Click(object sender, EventArgs e) { //输入的号码 string phone = this.txtPhone.Text.Trim().ToString(); this.lblMes.Text = "";//清空提示消息 this.txtPhone.Enabled = false;//输入号码框不可用 //先插入到cring_MessageQueue表里 string strSql = string.Format("insert into cring_MessageQueue(message) values ('TYPE=command;AppID=SMS;OP=QueryBox;Mobile={0}')", phone);
DBHelper.ExecuteNonQuery(strSql); //如果插入数据成功,则执行里面操作 }
protected void btnSearch_Click(object sender, EventArgs e) { try { //输入的号码 string phone = this.txtPhone.Text.Trim().ToString(); this.lblMes.Text = "";//清空提示消息 //System.Threading.Thread.Sleep(10000);//让程序停止10秒
//从这张表里去数据并显示 string strSql2 = "select createtime,mobile,tonecode,name,price from cring_RecentSession_BoxInfo where mobile='" + phone + "'";
DataTable dt = DBHelper.GetDataTable(strSql2);//获取查询的集合
//绑定数据源 if (dt == null) { this.lblMes.Text = "没有您要查询的信息!"; this.txtPhone.Text = ""; this.txtPhone.Enabled = true; } this.txtPhone.Enabled = true;//输入号码框可用 this.txtPhone.Text = ""; this.gvPhone.DataSource = dt; this.gvPhone.DataBind(); } catch (Exception ex) {
throw new Exception("查询出错!" + ex.ToString()); }
} protected void gvPhone_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#999999'"); e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=''"); } }
}