目的:在Repeater1的FooterTemplate中动态添加LinkButton实现分页功能,页面换页时希望做到不刷新。部分 aspx:<asp:UpdatePanel ID="upRepeater" runat="server" ChildrenAsTriggers="true">
  <ContentTemplate>
    <asp:Repeater ID="Repeater1" runat="server" onitemcommand="Repeater1_ItemCommand" 
      onitemdatabound="Repeater1_ItemDataBound" onitemcreated="Repeater1_ItemCreated">
      <HeaderTemplate>
         <table>
           <tr>
             <th style="width: 60px;">
               <asp:LinkButton ID="lbtnGenericName" runat="server" Text="Generic Name" CommandName="GenericName" CausesValidation="false"></asp:LinkButton>
             </th>
             <th style="width: 60px;">
               <asp:LinkButton ID="lbtnDisplayName" runat="server" Text="Display Name" CommandName="DisplayName" CausesValidation="false"></asp:LinkButton>
             </th>
           </HeaderTemplate>
           ...
           <FooterTemplate>
             <tr>
               <td id="tdFooter" runat="server" colspan="7" style="text-align: center;">
                 <asp:PlaceHolder ID="ph1" runat="server"></asp:PlaceHolder>                                 
               </td>
             </tr>
           </table>
         </FooterTemplate>
       </asp:Repeater>                    
     </ContentTemplate>
   </asp:UpdatePanel>       
后台动态添加LinkButton部分cs代码:int iPageCount = PageCount;
int iPageIndex = PageIndex;
Control ctl = Repeater1.Controls[Repeater1.Controls.Count - 1];
PlaceHolder ph1 = (PlaceHolder)ctl.FindControl("ph1"); for (int i = 0; i < iFinalNum; i++)
{
  LinkButton lbtn = new LinkButton();
  lbtn.CausesValidation = false;
  lbtn.ID = "lbtnLink" + i.ToString();                     
  // PageIndex like 10, 20, 30 & click the left '...'
  if (iPageIndex % 10 == 0)
  {
    lbtn.Text = (iPageIndex + i + 1).ToString();
   }
   else
   {
     lbtn.Text = (iPageIndex - (iPageIndex % 10) + i + 1).ToString();
   }
   iClickIndex = Convert.ToInt32(lbtn.Text) - 1;
   lbtn.PostBackUrl = Request.CurrentExecutionFilePath + "?ClickIndex=" + iClickIndex.ToString();   ph1.Controls.Add(lbtn);
   ph1.Controls.Add(GetBlankLabel());
   ToolkitScriptManager1.RegisterAsyncPostBackControl(lbtn);
}

解决方案 »

  1.   

    现在的问题就是每次点击分页的页码的1, 2, 3...页面就刷新了。我将鼠标放到链接上,IE状态栏显示的是
    javascript:WebForm_DoPostBackWithOptions..., 而不是 javascript:__doPostBack....
    我添加的LinkButton已将其CausesValidation属性设置为false了,而且Repeater1在UpdatePanel中。
      

  2.   

    自己顶,没有人用过Repeater的分页吗?
      

  3.   

    问题出现在这句话上吧:lbtn.PostBackUrl = Request.CurrentExecutionFilePath + "?ClickIndex=" + iClickIndex.ToString();
      

  4.   

    aspnetpager 结合updatepanel
    http://topic.csdn.net/u/20090907/19/0e9d68f1-76a6-4b28-a0a6-e06047914719.html