2011-04-05 62 views
1

我有一個UpdatePanel和其中的一些控件,如下所示。如果我在txtGoToPage文本框中更改一個數字,然後按Enter,則會調用GoToPage_TextChanged()事件處理程序。但是,如果首先輸入除1之外的任何頁碼,請按Enter鍵,然後在按Enter鍵後再次輸入數字1,否則不會調用GoToPage_TextChanged()ddlPageSize下拉列表中存在同樣的問題。正如你所看到的,默認情況下,第三項被選中。如果我選擇另一個項目,則調用ddlPageSize_SelectedIndexChanged(),但如果在此之後選擇第三個(最初選擇的)項目,則不會調用ddlPageSize_SelectedIndexChanged()UpdatePanel的作品奇怪

你能幫我解決嗎?

謝謝。

<asp:UpdatePanel ID="upnlLicensing" runat="server" UpdateMode="Conditional" > 
    <ContentTemplate> 
     ... 
     <asp:Label ID="Label1" runat="server" Text="Show rows:" /> 
     <asp:DropDownList ID="ddlPageSize" runat="server" AutoPostBack="true" 
      OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged"> 
      <asp:ListItem Value="20" /> 
      <asp:ListItem Value="50" /> 
      <asp:ListItem Value="100" Selected="True" /> 
     </asp:DropDownList> 
     &nbsp; 
     Page 
     <asp:TextBox ID="txtGoToPage" runat="server" AutoPostBack="true" 
      OnTextChanged="GoToPage_TextChanged" CssClass="gotopage" onchange="JSSetSessionValue('ReloadLicensing', true);JSSetSessionValue('NewPageNumber', this.value)" /> 
     of 
     <asp:Label ID="lblTotalNumberOfPages" runat="server" />     
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

如果是更新面板,可以排除故障嘗試1:設置UpdateMode =「始終」或2:移除UpdatePanel本身,看看它是否可用,如果你的代碼不在UP中。 – gbs 2011-04-05 21:06:12

+0

我知道它沒有UpdatePanel工作。 – dpreznik 2011-04-06 14:36:04

回答

0

嘗試在頁面上禁用緩存,有時更新面板和緩存可能有奇怪的行爲組合。

+0

您能告訴我如何禁用包含UpdatePanel的UserControl上的緩存嗎? – dpreznik 2011-04-06 14:39:47

+0

我加了Response.Cache.SetNoServerCaching();到我的UserControl的Page_Init(),但它沒有幫助。 – dpreznik 2011-04-06 15:34:01

+0

在頁面加載事件中添加以下代碼: Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d); Response.Expires = -1500; Response.CacheControl =「no-cache」; 如果它沒有幫助,那麼緩存不是問題 – Arthur 2011-04-06 15:45:49