2014-04-07 2 views
10
<asp:Repeater ID="RepCourse" runat="server"> 

    <ItemTemplate> 

    <div style="width:400px"></div> 

    <div class="course" style="float: left; margin-left: 100px; margin-top: 100px"> 

     <div class="image"> 
     <asp:Image ID="imgteacher" runat="server" Height="150" Width="248" ImageUrl='<%# "ShowImage.ashx?id="+ DataBinder.Eval(Container.DataItem, "CourseID") %>'/> 
     </div> 

     <div style="margin-left: 3px; width: 250px"> 
     <div class="name"> 
      <a href="#"><asp:Label runat="server" ID="lblname" Text='<%#Eval("CourseName") %>'></asp:Label></a> 
     </div> 
     <div style="height: 13px"></div> 
     <div id="teacher"> 
      <a href="#"><%#Eval("UserName") %> </a> 
     </div> 
     </div> 

     <div style="height: 4px"></div> 

     <div class="date"> 
     <div id="datebegin"> 
      <asp:Label ID="lbldatebegin" runat="server" Text='<%#Eval("BeginDate") %>'></asp:Label> 
     </div> 
     <div id="dateend"> 
      <asp:Label ID="lbldateend" runat="server" Text='<%#Eval("ClosingDate") %>'></asp:Label> 
     </div> 
     </div> 

    </div> 

    </ItemTemplate> 

</asp:Repeater> 

내 프로젝트에서 Repeater Control이 정상적으로 작동합니다. 그리고 지금은 그 데이터를 대체하기위한 페이지 매김이 필요합니다. 그러나 나는 이것에 대한 어떤 정보도 가지고 있지 않다. 누군가이 문제에 관해 조언 해 줄 수 있습니다.ASP.NET에서 리피터 컨트롤로 페이징을 사용하는 방법은 무엇입니까?

아래 그림과 같습니다.

enter image description here

+0

아마도 도움이 될 것입니다. http://www.aspsnippets.com/Articles/Implement-Paging-in-Repeater-control-in-ASPNet.aspx –

답변

17

는 더는 Repeater 컨트롤의 페이지 매김 내장,하지만 this 기사를 기반으로, 당신이 페이지에 대한 또 다른 Repeater 컨트롤을 만들어 Repeater 컨트롤의 페이지 매김을 달성하고 소스의로 PagedDataSource을 사용할 수 없습니다.

첫째, 마크 업이 추가 :

<div style="overflow: hidden;"> 

<asp:Repeater ID="rptPaging" runat="server" OnItemCommand="rptPaging_ItemCommand"> 
<ItemTemplate> 
    <asp:LinkButton ID="btnPage" 
    style="padding:8px;margin:2px;background:#ffa100;border:solid 1px #666;font:8pt tahoma;" 
    CommandName="Page" CommandArgument="<%# Container.DataItem %>" 
    runat="server" ForeColor="White" Font-Bold="True"> 
    <%# Container.DataItem %> 
    </asp:LinkButton> 
</ItemTemplate> 
</asp:Repeater> 

</div> 

다음, 뒤에 코드에서 다음과 같은 속성을 추가 :

//This property will contain the current page number 
public int PageNumber 
{ 
    get 
    { 
     if (ViewState["PageNumber"] != null) 
     { 
      return Convert.ToInt32(ViewState["PageNumber"]); 
     } 
     else 
     { 
      return 0; 
     } 
    } 
    set { ViewState["PageNumber"] = value; } 
} 

마지막으로 다음과 같은 방법을 추가

protected void Page_Load(object sender, EventArgs e) 
{ 
    BindRepeater(); 
} 

private void BindRepeater() 
{ 
    //Do your database connection stuff and get your data 
    SqlConnection cn = new SqlConnection(yourConnectionString); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = cn; 
    SqlDataAdapter ad = new SqlDataAdapter(cmd); 
    cmd.CommandText = "Select * from YourTable"; 

    //save the result in data table 
    DataTable dt = new DataTable(); 
    ad.SelectCommand = cmd; 
    ad.Fill(dt); 

    //Create the PagedDataSource that will be used in paging 
    PagedDataSource pgitems = new PagedDataSource(); 
    pgitems.DataSource = dt.DefaultView; 
    pgitems.AllowPaging = true; 

    //Control page size from here 
    pgitems.PageSize = 4; 
    pgitems.CurrentPageIndex = PageNumber; 
    if (pgitems.PageCount > 1) 
    { 
     rptPaging.Visible = true; 
     ArrayList pages = new ArrayList(); 
     for (int i = 0; i <= pgitems.PageCount - 1; i++) 
     { 
      pages.Add((i + 1).ToString()); 
     } 
     rptPaging.DataSource = pages; 
     rptPaging.DataBind(); 
    } 
    else 
    { 
     rptPaging.Visible = false; 
    } 

    //Finally, set the datasource of the repeater 
    RepCourse.DataSource = pgitems; 
    RepCourse.DataBind(); 
} 

//This method will fire when clicking on the page no link from the pager repeater 
protected void rptPaging_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e) 
{ 
    PageNumber = Convert.ToInt32(e.CommandArgument) - 1; 
    BindRepeater(); 
} 

시도해 보시고 문제가 있으시면 알려주십시오.

편집 : 대체 솔루션

또 다른 훌륭한 솔루션이 솔루션은 페이지의 탐색 버튼을 포함, Here을 찾을 수 있습니다. 기능별 페이지 매김을 보려면 링크에서 파일을 다운로드하고 DataList 컨트롤을 Repeater 컨트롤로 바꿔야합니다.

희망이 도움이됩니다.

관련 문제