我在ASP母版页中有一个标签控件,它的文本将加载到母版页的Page_Load上。
母版页:
<asp:label id="Label1"> </asp:label>Master.cs文件:
Protected void Page_load()
{
Label1.text = " Data Refreshed at :" + getUpdatedTimestamp();
}此标签表示在数据库中刷新数据时更新的时间戳。我们通过函数getUpdatedTimestamp()命中DB;
因此,如果使用导航到其他页面,那么当母版页再次加载时,我们将能够在母版页的page_load事件中访问数据库时获得更新的时间戳。
,我在这里的问题是:是否有任何方法可以访问DB并获得更新的时间戳,即使用户在同一页上而没有导航到其他页面.
注意:我尝试了母版页中的update面板,并将触发器设置为命中DB,但为此,我需要向母版页添加一个脚本管理器。我已经拥有了所有内容页的脚本管理器,并且无法将脚本管理器添加到母版页。因此,这个选项被排除在外。
有谁能建议我怎样才能做到这一点?!!
我还尝试了javascript 函数setinterval()来完成这一任务,但是在javascript函数中仍然坚持调用服务器端函数。
发布于 2014-06-29 12:00:05
使用脚本管理器只更新一个小标签可能会导致从服务器传输的数据的开销。
我建议使用客户端javascript,它将在间隔调用服务器端WebMethod。
在您的WebMethod页面上创建一个ASPX.CS:
[System.Web.Services.WebMethod]
public static string GetCurrentTime()
{
return DateTime.Now.ToString();
}在客户端代码中,使用WebMethod调用获取服务器jQuery,并在标签中显示服务器响应:
<html>
<head runat="server">
<enter code here!-- jQuery required -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
function ShowCurrentTime() {
// Ajax call to YOUR_PAGE.aspx/GetCurrentTime
$.ajax({
type: "POST",
url: "Default.aspx/GetCurrentTime", // Change Default.aspx to your ASPX page name, and GetCurrentTime to your server-side WebMethod name
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess // OnSuccess method is called when AJAX request receives the data from the server
});
}
function OnSuccess(response) {
// The response will contain JSON object like {"d":"29.6.2014 13:21:47"},
// so the actual data is response.d
$("#lblCurrentTime").text(response.d); // Fill our SPAN label with the data.
}
$(function () {
// Call every 1000 miliseconds
window.setInterval(ShowCurrentTime, 1000);
});
</script>
</head>
<body>
<form id="form1" runat="server">
<!-- LABEL TO SHOW CURRENT TIME -->
<span id="lblCurrentTime"></span>
</form>
</body>
</html>就这样。这样,从服务器传输的数据就越少越好。调用服务器端的WebMethod不会像标准回发那样对服务器产生巨大的性能影响,因为WebMethod避免了标准的页面生命周期事件。
更多信息:
http://www.aspsnippets.com/Articles/Call-ASPNet-Page-Method-using-jQuery-AJAX-Example.aspx
http://msdn.microsoft.com/en-us/library/byxd99hx(v=vs.90).aspx
发布于 2014-06-29 12:00:28
您必须将标签放在UpdatePanel中,这样就可以在不重新加载整个页面的情况下更新标签。如果您已经这样做了,则需要设置一个触发器来执行操作(在您的情况下,需要更新时间戳)
https://stackoverflow.com/questions/24474221
复制相似问题