我需要一个用户控件,每隔5
分钟从SQL Server获取数据,但不刷新整个网页。
该项目使用4.0 Framework和C#作为服务器脚本。
我需要这个而不使用定时器控制。
让我澄清一件事......这纯粹是基于Web的项目(ASP.NET)。请不要回答Windows窗体和其他一些技术。
答案 0 :(得分:3)
您可以设置使用setInterval启动的Ajax请求。 这样您就可以只刷新页面的一部分。
另一种方法是使用SignalR - 一种推送框架,让您将更改从服务器推送到客户端。 http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-getting-started-with-signalr-20
这样做的好处是您不需要固定的间隔,因为您可以让服务器在实时发生更改时推送更改。
答案 1 :(得分:1)
var timer = new System.Threading.Timer((e) =>
{
MyMethod();
}, null, 0, TimeSpan.FromMinutes(5).TotalMilliseconds);
为了您的刷新要求您必须使用AJAX。 。它不会刷新整个页面。
第二个选项 有几种方法可以做到这一点,你可以创建一个每5分钟运行一次的计时器,当时间达到5分钟间隔之一时启动它,或者让它每隔几秒运行一次并检查时间是否可被5整除/ p>
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer(); // create a new timer
timer.interval = 300000; //300000 = 5 minutes
then create a tick function and add an event handler
timer.Tick += new EventHandler(TimerTickHandler); //add the event handler
timer.Start(); //start the timer
答案 2 :(得分:0)
您是否尝试将用户控件放入aspx页面并将其放入iframe中?然后您可以设置该页面具有refesh元标记。 像这样:
PageWithUserControl.aspx html代码
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">
<title></title>
<meta id="MetaRefresh" http-equiv="refresh"content="21600;url=PageWithUserControl.aspx" runat="server" />
</head>
<body>
<form id="form1" runat="server">
<div>
// your usercontrol here
</div>
</form>
和cs代码:
protected void Page_Load(object sender, EventArgs e)
{
string RefreshValue = Convert.ToString((2 * 60));
// Refresh this page 60 seconds before session timeout, effectively resetting the session timeout counter.
MetaRefresh.Attributes["content"] = RefreshValue + ";url=PageWithUserControl.aspx? q=" + DateTime.Now.Ticks;
}
然后在设置的时间之后将重新刷新页面并重新加载数据。
答案 3 :(得分:-1)
你应该能够使用它来查询客户端cpu的日期和时间,每隔五分钟