JavaScript setInterval函数不更新<div>元素中的Gridviews

时间:2018-03-26 18:59:47

标签: javascript c# gridview refresh setinterval

我有2个项目,我使用的标签(至少用于测试)刷新上次更新时间。但是,元素内的GridViews只更新一次。数据解析并在控制台应用程序中正常写出,因此我不确定打嗝是什么。奇怪的是,虽然确实为第一次迭代加载数据,但是没有为新数据刷新。

是否setInterval函数不起作用?我已经尝试过了,我找到了一个递归的setTimeout函数,但都没有用。两者都包含在显示尝试1和2的评论中。

编辑如果我只是一个警告(),则尝试2有效,但调用C#方法只会运行一次。

非常感谢任何帮助。

这是页面:

Get Redemptions

以下是其背后的代码:

    <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <link href="CSS/Stylesheet.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript">
        function ProcessData() //Attempt 1
        {
            <%Process_Data();%>
            setTimeout(ProcessData, 3000);
        }
        setInterval(function () {
            ProcessData()
        }, 3000);

    </script>
      <script type="text/javascript">     // Attempt 2
        function ProcessData()
        {
            <%Process_Data();%> 
            setTimeout(ProcessData(), 5000);
        }
        ProcessData();
    </script>


    <div class="Images">
        <asp:Label ID="Label1" runat="server" Text="123"></asp:Label><br />
        <asp:Label ID="Label2" runat="server" Text="123"></asp:Label><br />
    </div>
    <div id="dnrLeft" class="DonorsLeft">
        <div class="col-md-4">
            <asp:GridView ID="dnrResultsLeft" runat="server" HorizontalAlign="Left" AutoGenerateColumns="false">
                <Columns>
                    <asp:BoundField DataField="DonorName" HeaderText="" />
                    <asp:BoundField DataField="Club" HeaderText="" />
                </Columns>
            </asp:GridView>
        </div>
    </div>
    <div id="dnrRight" class="DonorsRight">
        <div class="col-md-4">
            <asp:GridView ID="dnrResultsRight" runat="server" HorizontalAlign="Right" AutoGenerateColumns="false">
                <Columns>
                    <asp:BoundField DataField="DonorName" HeaderText="" />
                    <asp:BoundField DataField="Club" HeaderText="" />
                </Columns>
            </asp:GridView>
        </div>
    </div>
</asp:Content>

1 个答案:

答案 0 :(得分:0)

Page_Load将在每次回调更新时运行,因此dnrs将始终使用数据库中的新数据进行更新,即使您在上一次删除时也是如此。

RemoveAt(i)逻辑很奇怪。 RemoveAt()从指定位置的列表中删除一个项目,但每次迭代都会增加位置。同时,每次迭代时阵列变小(因为你要移除一个项目),所以当你到达列表的中途时会开始失败。如果您想从列表中每次获取第一个项目,则应add( dnrs[0])RemoveAt(0)。这将添加列表中的第一个项目,然后将其从dnrs中删除,这意味着在下一次迭代中,下一个项目现在将位于索引0处。