我有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>
答案 0 :(得分:0)
Page_Load将在每次回调更新时运行,因此dnrs将始终使用数据库中的新数据进行更新,即使您在上一次删除时也是如此。
RemoveAt(i)
逻辑很奇怪。 RemoveAt()
从指定位置的列表中删除一个项目,但每次迭代都会增加位置。同时,每次迭代时阵列变小(因为你要移除一个项目),所以当你到达列表的中途时会开始失败。如果您想从列表中每次获取第一个项目,则应add( dnrs[0])
和RemoveAt(0)
。这将添加列表中的第一个项目,然后将其从dnrs中删除,这意味着在下一次迭代中,下一个项目现在将位于索引0处。