2010-05-04 2 views
0

다음을 수행하려고합니다. 내 ASP 페이지에 동적 테이블이 있습니다. 좋은 결과를 얻으려면 여러 페이지에 표를 표시하고 싶습니다. 참고 : 그리드 뷰 을 사용하지 마십시오.ASP.net에서 여러 페이지 (Google 결과와 마찬가지로)

+0

, 당신은 무엇을 사용하고 있습니까? 제안 사항은 일정 수준의 구현 세부 사항에 달려 있습니다. 예를 들어, [무엇을 사용하든간에] ObjectDataSource 또는 SqlDataSource (둘 다 페이징을 지원함)를 지원합니다. – mwilson

+0

정상적인 테이블 (Html)을 사용하고 있지만 동적 인 것은 내가 보여줄 결과에 따라 커진다는 것을 의미합니다. – Hany

답변

0

플러그인을 수행하려면 jquery tablesorter 플러그인과 jquery.tablesorter.pager 플러그인을 사용할 수 있습니다. 그것은 표준 HTML 테이블에서 작동하고, 대체 행 hilighting, 정렬 등 많은 옵션이 있습니다.

+0

아래쪽면은 브라우저에 모든 결과를 보내야합니다. 그는 Take 및 Skip과 함께 LINQ를 실제로 사용해야합니다. –

+0

오른쪽, 테이블의 행 수에 따라 느려질 수 있습니다. – derek

0

최대로 반환되는 레코드 수에 따라 다릅니다. 가장 효율적인 방법은

  1. 입니다. 쿼리 매개 변수가 다른 링크로 페이지 번호를 구현하십시오.
  2. 쿼리 매개 변수를 기반으로 서버 쪽에서 해당 페이지에만 해당하는 레코드를 가져옵니다. 예. 페이지 크기가 10이고 현재 페이지가 2이면 서버에서 11,202 레코드 만 가져 와서 html 테이블에 바인딩하십시오. 당신은 SQL에 LINQ를 사용하는 경우

  3. , 그 페이지의 기록을 가져 ROWID의 사용을 가지고 당신이 직접 SQL 쿼리 또는 저장 발동을 사용하는 경우 http://blog.ofiryaron.com/blog/post/Pagination-on-Linq-to-SQL-childs-play!.aspx

  4. 같이 방법을 건너 뛰하게 사용합니다.

+0

나는 정상적인 arraylist에서 나의 결과를 가져올 것이다. 나는 HTML 테이블에 넣는다. 나는 멀티 페이지에서 그것을 만들고 싶어. – Hany

1

출력에서 ​​GridView가 제공하는 것보다 더 유연하게하려면 Repeater를 살펴보십시오.

리피터가 직접 페이징을 구현하지 않으므로 다음 및 이전 버튼을 제공해야합니다. Sundararajan S가 언급했듯이 많은 레코드가있는 경우 현재 페이지의 레코드 만 모든 레코드가 아닌 브라우저에 반환되도록 현재 페이지 번호와 페이지 크기를 사용하려고합니다. 다음은

도움이 예를 들어 (나는 당신의 데이터 소스가 같은 것 알고하지 않았다, 그래서 난 그냥 예를 들어 목록을 사용했다. 더 적절한 뭔가 대체합니다.)

희망입니다.

을 Default.aspx :

<asp:Button ID="PrevPageButton" runat="server" Text="Prev" 
     onclick="PrevPageButton_Click" /> 
    <asp:Label ID="CurrentPageLabel" runat="server" /> 
    <asp:Button ID="NextPageButton" runat="server" Text="Next" 
     onclick="NextPageButton_Click" /> 


    <asp:Repeater ID="Repeater1" runat="server"> 
     <ItemTemplate> 
      <h2> <%# Eval("Name") %> </h2> 
      <p> 
      <%# Eval("Description") %> 
      </p> 
     </ItemTemplate> 
    </asp:Repeater> 

하여 default.aspx.cs : 당신이의 GridView를 사용하지 않는 경우

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace RepeaterPaging 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     private const int PageSize = 10; 
     private const int MaxPage = 4; 


     public int CurrPage 
     { 
      get 
      { 
       if (this.ViewState["CurrPage"] == null) 
        this.ViewState["CurrPage"] = 0; 

       return (int) this.ViewState["CurrPage"]; 
      } 

      set { this.ViewState["CurrPage"] = value; } 
     } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       BindItems(); 
      } 

     } 

     protected void BindItems() 
     { 
      int currPage = CurrPage; 

      List<Book> books = new List<Book>(); 
      int startItem = (currPage * PageSize) + 1; 
      for (int i = startItem; i < startItem+PageSize; i++) 
      { 
       books.Add(new Book("Title " + i, "Description " + i + " ...................")); 
      } 

      Repeater1.DataSource = books; 
      Repeater1.DataBind(); 

      CurrentPageLabel.Text = 
       string.Format(" Page {0} of {1} ", CurrPage + 1, MaxPage + 1); 
     } 

     protected void NextPageButton_Click(object sender, EventArgs e) 
     { 
      if (CurrPage < MaxPage) 
      { 
       CurrPage++; 
       BindItems(); 
      } 
     } 

     protected void PrevPageButton_Click(object sender, EventArgs e) 
     { 
      if (CurrPage > 0) 
      { 
       CurrPage--; 
       BindItems(); 
      } 
     } 
    } 

    public class Book 
    { 
     public string Name { get; set; } 
     public string Description { get; set; } 

     public Book(string name, string desc) 
     { 
      Name = name; 
      Description = desc; 
     } 
    } 
} 
관련 문제