2010-07-13 43 views
11

我有一个用户控件linkbuttons(用于分页)和更新面板中的中继器。分页工作正常,但每次点击进入下一页时都会导致整页回发。更新面板内的用户控件导致整页回发

更新面板看起来是这样的:

<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> 

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

到目前为止,我已经尝试添加一个异步回传触发用户控件,它会导致异步回发,但不会更新更新面板中的其余文本。换句话说,异步回发发生,下一页出现,但中继器中的原始文本也在其下方。

我也确认我在我的linkbuttons上设置了IDS,因为这可以在更新面板中触发完整的回发。

我试着改变更新面板模式(总是,有条件的,ChildrenAsTriggers等)。

没有任何区别 - 唯一真正导致异步回发的是使用触发器,但更新面板中的其余内容未更新,因此我得到重复的内容。有任何想法吗?

+0

有关LinkBut​​tons上缺少ID的信息块导致完整回发对我有用,欢呼声! – paulH 2012-12-03 11:41:42

回答

15

如果您的UpdatePanel无法将其内容呈现到<div>(例如,它位于<tr>之内),则会发生完整回发。因此,检查你的UpdatePanel里面的html,你可能会在那里找到答案(另外,找一些不正确的xhtml,就像不正确的关闭元素一样)。

+0

就是这样!如果您注意到标题模板内部,我意外关闭了标记,而不是将其关闭在页脚中。只要我删除错误地形成的标签,它开始工作。我不知道更新面板是那么敏感...... – Neil 2010-07-13 16:13:06

+0

+1:我的UpdatePanel直接放置在一个表格标签内,当它从那里移出时,开始工作。谢谢! – 2012-03-14 15:17:30

0

删除更新模式=“始终”不要放任何东西,它应该工作。

还有一件事是你添加脚本管理器到你的页面或控制不?

没有脚本管理器,它不会工作。

+0

我认为默认更新模式总是 - 我删除它,但它没有什么区别。脚本管理器目前被添加到页面,而不是用户控件。 – Neil 2010-07-13 15:57:55

相关问题