2014-03-24 50 views
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> 
      &nbsp;<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(); 
} 

回答

0

我解決它通過下拉列表設置autopostback="true"

相關問題