如何检查表插入新行的时间,然后使用UpdatePane自动更新Repeater

时间:2013-09-26 08:26:25

标签: c# asp.net sql asp.net-ajax updatepanel

我正在编写一个论坛。在我的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的新手,所以对我来说这很难。

1 个答案:

答案 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并将事件发送回客户端。