Asp.net

更新面板內的使用者控制項導致整頁回發

  • July 13, 2010

我有一個帶有連結按鈕(用於分頁)的使用者控制項和一個更新面板內的轉發器。分頁工作正常,但每次我點擊下一頁時都會導致整頁回發。

更新面板如下所示:

<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Always">
       <ContentTemplate>
           <asp:Repeater ID="rptOrganizations" runat="server">
               <HeaderTemplate>
                   <table>
                       <thead>
                           <tr>
                               <th>Organization</th>
                               <th>State</th>
                               <th>Accredited Since</th>
                           </tr>
                       </thead>
                   </table>
               </HeaderTemplate>
               <ItemTemplate>
                   <tr>
                       <td>
                           <asp:Literal ID="ltlInstitution" runat="server" />
                       </td>
                       <td>
                           <asp:Literal ID="ltlState" runat="server" />
                       </td>
                       <td>
                           <asp:Literal ID="ltlAccreditedDate" runat="server" />
                       </td>
                   </tr>
               </ItemTemplate>
               <FooterTemplate>
                   </table>
               </FooterTemplate>
           </asp:Repeater>

           <uc2:RepeaterPaging ID="rpPager" runat="server" PageSize="10" OnNextButtonClickEvent="btnNext_Click" OnPreviousButtonClickEvent="btnPrev_Click" />
       </ContentTemplate>  
   </asp:UpdatePanel>

使用者控制項的內容如下所示:

<asp:LinkButton ID="btnPrev" runat="server" OnClick="btnPrev_Click">Previous</asp:LinkButton> | 
<asp:LinkButton ID="btnNext" runat="server" OnClick="btnNext_Click">Next</asp:LinkButton> 

  
<asp:Literal ID="ltlNumResults" runat="server" /> results returned.

到目前為止,我已經嘗試為使用者控制項添加一個非同步回發觸發器,這確實會導致非同步回發,但不會更新更新面板中的其余文本。換句話說,非同步回發發生並顯示下一頁,但轉發器中的原始文本也在其下方。

我還確認我在連結按鈕上設置了 IDS,因為這可以觸發更新面板內的完整回發。

我嘗試過更改更新面板模式(Always、Conditional、ChildAsTriggers 等)。

沒有任何區別 - 唯一真正導致非同步回發的是使用觸發器,但是更新面板中的其餘內容沒有更新,所以我得到了重複的內容。有任何想法嗎?

如果您的 UpdatePanel 無法將其內容呈現給 a <div>(例如,當它位於 內部時<tr>),則會發生完整回發。因此,請檢查 UpdatePanel 中的 html,您可能會在那裡找到答案(另外,尋找一些不正確的 xhtml,例如錯誤關閉的元素)。

刪除更新模式=“始終”不要在上面放任何東西,它應該可以工作。

還有一件事是您將腳本管理器添加到您的頁面還是不控制?

如果沒有腳本管理器,它將無法工作。

引用自:https://stackoverflow.com/questions/3238524