我正在编写一个论坛。在我的showcomment.aspx
页面中,我使用Repeater从SQL数据库获取注释并在每个主题中显示它们。
我使用UpdatePanel自动更新插入数据库中的新注释。
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<div onclick="__doPostBack('UpdatePanel1', '');">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel1_Load">
<ContentTemplate>
<asp:Repeater ID="RepeaterComment" runat="server">
....
</asp: Repeater...>
</ContentTemplate>
</asp: UpdatePanel>
</div>
UpdatePanel1_Load():
public void UpdatePanel1_Load(Object sender, EventArgs e)
{
int idtopic = Convert.ToInt32(Request.QueryString["idtopic"]);
BindRepeaterComment(idtopic);
}
我建议使用Update Panel和Timer Control自动更新UpdatePanel。
<asp:Timer ID="AutoRefreshTimer" runat="server"
Interval="10000"
ontick="AutoRefreshTimer_Tick"/>
但我只想在将新行插入数据库时才刷新。
该函数在Database中插入一个新行位于另一个aspx页面中,而不是在显示评论页面的同一页面中。
我还建议使用srcipt来更新UpdatePanel:
<script type="text/javascript">
var UpdatePanel1 = '<%=UpdatePanel1.ClientID%>';
function ShowItems()
{
if (UpdatePanel1 != null)
{
__doPostBack(UpdatePanel1, '');
}
}
</script>
但我不知道如何调用ShowItem()函数。
有人问我,在向数据库添加新行后尝试添加行:UpdatePanel1.Update()
,但是“添加新行”功能在另一页中,所以我不能。
如何在没有按钮的情况下实现数据库更改并自动更新新注释(仅在数据库发生更改时更新)。
帮助?我试着找了很多天的解决方案,因为我是ASP.net的新手,所以对我来说这很难。
答案 0 :(得分:1)
您可以使用HTML5
服务器发送的事件来捕获任何更改。有关详细信息,请查看以下链接。
http://www.w3schools.com/html/html5_serversentevents.asp
您也可以在此处查看http://forums.asp.net/t/1885055.aspx
要从sql数据库服务器获取通知,可以在ASP.NET应用程序中使用SQL Dependency。
如果您在这种情况下不使用SQL服务器,则可以从服务器调用db并将事件发送回客户端。