【问题标题】:Asp.net auto response to clientAsp.net 自动响应客户端
【发布时间】:2014-07-31 19:00:52
【问题描述】:

我的 sql server 数据库中有这张表:

  1. 姓名
  2. 家庭
  3. 地址

我有 2 个用户:

  1. 用户A
  2. 用户 B

我想在用户 B 向表中插入新记录时,在用户 A 的 gridView 中显示。
我使用这个解决方案:
用户一个网络浏览器有一个这样的代码:

<script type="text/javascript">
    $(document).ready(function () {
        setTimeout("RefreshPage()", 5000);

    });
    function RefreshPage() {
       /* var url = "GetOrder.aspx";
        $(location).attr("href", url);
        */
        location.reload();

    };



</script><br/>

该代码每 5 秒刷新一次用户 A 网页,在页面加载事件中,我编写了一个简单的代码来运行选择查询并在 gridview 中显示。
这个方法非常疯狂的解决方法。
我可以使用其他解决方案吗?如何使用?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您的代码刷新整个页面。使用下面的代码,它只会刷新包含。 :)

    <asp:ScriptManager ID="scp1" runat="server"></asp:ScriptManager>
    <asp:UpdatePanel ID="up1" runat="server">
        <ContentTemplate>
            <asp:GridView ID="yourGrid" runat="server"></asp:GridView>
            <asp:Button id="btnAutoRefresh" runat="server" style="display:none" 
                onclick="btnAutoRefresh_Click" />
        </ContentTemplate>
    </asp:UpdatePanel> 
    
    <script type="text/javascript">
        $(document).ready(function () {
            setInterval("RefreshPage()", 5000);
    
        });
        function RefreshPage() {
            $("#<%=btnAutoRefresh.ClientID %>").trigger("click");
    
        };    
    </script>  
    
    // code behind
     protected void btnAutoRefresh_Click(object sender, EventArgs e)
     {
            //  code for Bind Grid
    
     }
    

    【讨论】:

    • 间隔刷新页面或部分页面是不好的技术。关键是仅在指定时间通过来自服务器的信号强制客户端更新页面。
    【解决方案2】:

    您需要使用客户端通知技术,例如SignalR。你可以阅读更多关于它here

    【讨论】: