3

我正在编写一个论坛。我的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);
    }

我建议使用更新面板和计时器控件来自动更新更新面板。

<asp:Timer ID="AutoRefreshTimer" runat="server"
        Interval="10000"
        ontick="AutoRefreshTimer_Tick"/>

但我只希望它仅在将新行插入数据库时​​刷新。

向数据库插入新行的功能在另一个 aspx 页面中,而不是在与显示评论页面相同的页面中。

我还建议使用 srcipt 来更新 UpdatePanel:

<script type="text/javascript">

            var UpdatePanel1 = '<%=UpdatePanel1.ClientID%>';

            function ShowItems()
            {
               if (UpdatePanel1 != null) 
               {
                   __doPostBack(UpdatePanel1, '');
               }
            }       

</script>

但我不知道如何调用 ShowItem() 函数。

有人问我,尝试添加行:UpdatePanel1.Update()在我向数据库添加新行后,但“添加新行”功能在另一个页面中,所以我不能。

没有按钮,它如何实现数据库更改和自动更新新评论(数据库有变化时才更新)。

帮助?我已经尝试找到解决方案很多天了,因为我是 ASP.net 的新手,所以这对我来说太难了。

4

1 回答 1

1

您可以使用HTML5服务器发送的事件来捕获任何更改。有关更多详细信息,请查看以下链接。

http://www.w3schools.com/html/html5_serversentevents.asp

您也可以在这里查看http://forums.asp.net/t/1885055.aspx

要从 sql 数据库服务器获取通知,您可以在 ASP.NET 应用程序中使用 SQL Dependency。

如果您在这种情况下不使用 SQL 服务器,则可以从服务器调用数据库并将事件发送回客户端。

于 2014-02-17T11:54:28.500 回答