0
我有一個計時器更新面板。面板包含有一些記錄的中繼器。我也使用PagedDataSource來分頁轉發器的數據。我添加了服務器方法到onchange事件,重新加載中繼器的頁面大小。此事件在需要時觸發,但只有在計時器滴答執行時纔會重新加載數據。因此,當我更改頁面大小時,有時需要等待整個計時器間隔以查看頁面大小更改。誰能解釋爲什麼會發生這種情況任何幫助,將不勝感激c#onchange事件只在定時器運行時重新加載數據。爲什麼?
這裏是我的一些代碼
<form id="linksForm" runat="server">
<div>
<div style="float: left; background-color: white">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Button ID="DisplayAllLinksBT" OnClick="DisplayAllLinks" runat="server" Text="Visi"/>
<asp:Button ID="DisplayNewLinksBT" OnClick="DisplayNewLinks" runat="server" Text="Nauji" />
<asp:Timer ID="TimerLinks" runat="server" Interval="10000" OnTick="OnLinksRepeaterTick">
</asp:Timer>
<asp:UpdatePanel ID="LinksPanel" UpdateMode="Always" runat="server">
<ContentTemplate>
<div id="loadingImageArea"></div>
<table style="border: none;">
<% if (!HasPermission)
{ %>
<tr>
<th>
<td style="color: green;">Upvotes</td>
<td style="color: red;">Downvotes</td>
</th>
</tr>
<% } %>
<asp:Repeater ID="LinksRepeater" runat="server">
<ItemTemplate>
<tr>
...
<asp:Label ID="PageSizeLabel" runat="server" Text="Rodyti"></asp:Label>
<asp:DropDownList ID="PageSizeSelection" Width="60" runat="server" OnSelectedIndexChanged="PageSizeSelection_SelectedIndexChanged">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</div>
服務器端:
protected void PageSizeSelection_SelectedIndexChanged(object sender, EventArgs e)
{
var pageSize = Int32.Parse(PageSizeSelection.SelectedValue);
SessionHelper.PutValue(PageSizeSessionVariable, pageSize);
var lastPageIndex = Math.Ceiling(
((float) ((PagedDataSource) LinksRepeater.DataSource).DataSourceCount)/
(int)pageSize) - 1;
var currentPageIndex = ((PagedDataSource) LinksRepeater.DataSource).CurrentPageIndex;
if (lastPageIndex > 0 && currentPageIndex > lastPageIndex)
{
SessionHelper.PutValue(CurrentPageIndexSessionVariable, (int)lastPageIndex);
}
LoadLinks();
}