我在asp.net 中创建了一个页面。它正在访问数据库中的数据。我想要的是每当我更改数据库中的数据时,更改应该会自动反映在页面上,而无需用户按下刷新按钮。有人可以告诉我该怎么做。可以使用java脚本完成吗?
3 回答
您可以使用Web 套接字将数据发送到连接的客户端,也可以使用 AJAX、jQuery ajax将服务器池化以进行数据库更改,或者您可以使用 asp.net ajax 计时器控制。使用 asp.net ajax 计时器会比其他人更直接。
使用 asp.net 定时器
html
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer runat="server" id="UpdateTimer" interval="5000" ontick="UpdateTimer_Tick" />
<asp:UpdatePanel runat="server" id="TimedPanel" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="UpdateTimer" eventname="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label runat="server" id="DateStampLabel" />
</ContentTemplate>
</asp:UpdatePanel>
代码背后(服务器端代码)
protected void UpdateTimer_Tick(object sender, EventArgs e)
{
// Update the ui with database changes
}
对于网页,最好的方法是使用 javascript/jQuery 异步轮询页面
javascript: setTimeout - http://www.w3schools.com/js/js_timing.asp
jquert: $.ajax - http://api.jquery.com/jQuery.ajax/
- 创建一个以指定间隔循环的函数 -函数 CheckServer(seconds)
- 创建一个页面,告诉服务器上有更新 - Updated.aspx
- 使用$.ajax在函数 CheckServer(seconds)中调用Updated.aspx并检查更新。
- 当有更新时,运行代码以刷新页面上的必要部分
您可以在此处找到作为 VS2012 ASP.NET 项目的示例:
https://docs.google.com/file/d/0B9m3YXHeSTDOakxVbk50MHhhTkE/edit
有3个重要文件:
- UserPage.aspx - 用户将在哪里看到更新。
- MakeUpdatePage.aspx - 管理员进行更新的地方。
- 我没有通过 aspx 页面检查更新,而是在services.asmx中创建了管理更新和数据交换的 Web 服务。
代码并不完美,只是为了给你故事的要点,但它确实有效。我在 2 个用户、1 个管理员的情况下对其进行了测试。
这个解决方案有点复杂,因为我还向您介绍了Web 服务。而不是默认的。这些有点定制。它们具有使它们能够被客户端的浏览器直接调用并返回json 对象的属性。因此,您还将了解json是什么...
你可以在这里找到一篇关于这些概念的好文章:
http://www.codeproject.com/Articles/45275/Create-a-JSON-WebService-in-ASP-NET-2-0-with-a-jQu