日期:2014-05-19  浏览次数:20401 次

无刷新检测时间
数据库里面有一个字段,表示到货时间,我想与当前时间比较

在gridview里面显示还有多长时间到货.

就像淘宝拍卖那样没有刷新地显示还有多长时间.实时更新
怎么实现!

------解决方案--------------------
用定时器,不断了取数据库的到货时间,与当前时间比较,更新显示即可,用ajax技术
------解决方案--------------------
使用ajax.dll实现
前台:
<body onload= "setTimeout( 'GetResidualExamPaperTime() ', 1000); ">


后台:

/// <summary>
/// 显示剩余时间
/// </summary>
/// <param name= "pubID "> </param>
/// <returns> </returns>
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
public string GetResidualExamPaperTime(string pubID)

上面方法取得的时间,和你设置的时间做一下减法,然后在换算一下可以实现


换算显示参考如下:
//获取考试总时间(分钟数)
int totalMinute = new FCD_ExamPaper().getExamPaperTime(publishID);

//将分钟转换成时间字符串形式(开始时过一秒钟)
string totalTimeString = Convert.ToInt32(totalMinute) + ":00 ";
//
string tmpStr = " ";
if (HttpContext.Current.Session[ "lastTime "] == null)
tmpStr = totalTimeString;
else
tmpStr = HttpContext.Current.Session[ "lastTime "].ToString();

int minute = 0, second = 0;
minute = int.Parse(tmpStr.Substring(0, tmpStr.IndexOf( ': ')));
second = int.Parse(tmpStr.Substring(tmpStr.IndexOf( ': ') + 1));
//
if (second == 0)
{
second = 59;
minute--;
}
else
{
second--;
}

HttpContext.Current.Session[ "lastTime "] = minute.ToString() + ": " + second.ToString().PadLeft(2, '0 ');
return HttpContext.Current.Session[ "lastTime "].ToString();

------解决方案--------------------
B/S系统要做到实时是不可能的,只能做到定时刷新显示数据。
使用asp.net ajax的timer控件,设置合适的间隔时间,在此控件事件中刷新gridview