Cấp bậc tác giả:

DOTNET

Phân trang trong Repeater, DataList, hoặc Enumerable Collection

Được viết bởi webmaster ngày 05/06/2013 lúc 01:27 AM
Thay vì cố gắng để tạo ra Repeater nâng cao, tôi quyết định làm điều khiển riêng biệt có phân trang. CollectionPager hoạt động như một trung gian cho điều khiển (như Repeater ) và nguồn dữ liệu của bạn ( đối tượng Dataset hoặc Collection ).
  • 0
  • 13142
Tải tệp tin: Click ở đây

Phân trang trong Repeater, DataList, hoặc Enumerable Collection


Giới thiệu
Thay vì cố gắng để tạo ra Repeater nâng cao, tôi quyết định làm điều khiển riêng biệt có phân trang. CollectionPager hoạt động như một trung gian cho điều khiển (như Repeater ) và nguồn dữ liệu của bạn ( đối tượng Dataset hoặc Collection ). Nó sử dụng lớp PagedDataSource để thực hiện.

CollectionScreenshot.gif

CollectionPagerExamples.gif

Có chức năng này trong điều khiển riêng biệt cho phép bạn thêm phân trang cho bất kỳ Web Control chấp nhận nguồn dữ liệu. Ngoài ra, bạn có thể đặt CollectionPager bất cứ nơi nào bạn muốn trong quan hệ với điều khiển nó.

Tùy chọn Postback hoặc QueryString

Điều khiển này cho phép duyệt trang qua collection với hai phương thức khác nhau:
  • QueryString. Sử dụng khi bạn không muốn / cần phải postback dữ liệu. Thông qua các thuộc tính của điều khiển, bạn có thể thiết lập phím chuỗi truy vấn để sử dụng. Phím mặc định là "Page".
  • Postback. Sử dụng khi bạn muốn / cần phải postback dữ liệu. Hữu ích khi bạn muốn duy trì ViewState.
Cách sử dụng điều khiển

Sử dụng điều khiển, chỉ cần thêm tham chiếu đến DLL theo tuân thủ và đặt nó trong hộp công cụ của bạn. Sau đó bạn có thể kéo nó vào Project của bạn. Nếu bạn muốn làm bằng tay, tập tin .aspx như sau:

<%@ Register TagPrefix="cc1" Namespace="SiteUtils" 
  Assembly="CollectionPager" %>
<%@ Page language="c#" Codebehind="Example.aspx.cs" 
  AutoEventWireup="false" Inherits="CollectionPagerExample.WebForm1" %>
<HTML>
    <HEAD><TITLE>Collection Repeater Example</TITLE></HEAD>
    <BODY>
<DIV>
<ASP:LITERAL id=litDifferentResultsFormat runat="server"></ASP:LITERAL>
</DIV>
<DIV>
<ASP:LITERAL id=litTopPager runat="server"></ASP:LITERAL>
</DIV>

    <ASP:REPEATER id="Repeater1" runat="server">
        <HEADERTEMPLATE>
            <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0">
            <TR>
            <TH>Header1</TH>
            <TH>Header2</TH>
            <TH>Header3</TH>
            <TH>Header4</TH>
            <TH>Header5</TH>
            </TR>
        </HEADERTEMPLATE>
        <ITEMTEMPLATE><TR>
            <TD><%# DataBinder.Eval(Container.DataItem, "Column1") %></TD>
            <TD><%# DataBinder.Eval(Container.DataItem, "Column2") %></TD>
            <TD><%# DataBinder.Eval(Container.DataItem, "Column3") %></TD>
            <TD><%# DataBinder.Eval(Container.DataItem, "Column4") %></TD>
            <TD><%# DataBinder.Eval(Container.DataItem, "Column5") %></TD>
        </TR></ITEMTEMPLATE>
        <FOOTERTEMPLATE>
            </TABLE>
        </FOOTERTEMPLATE>
    </ASP:REPEATER>

    <CC1:COLLECTIONPAGER id="CollectionPager1" runat="server">
    </CC1:COLLECTIONPAGER>
    </BODY>
</HTML>

Trong mã bên trong, bạn chỉ cần đối tượng nguồn dữ liệu CollectionPager1. Nếu bạn sử dụng DataSet như là nguồn dữ liệu của bạn, bạn sẽ cần phải vượt qua DataView. Ví dụ:

public class WebForm1 : System.Web.UI.Page 
    protected System.Web.UI.WebControls.Repeater Repeater1; 
    protected SiteUtils.CollectionPager CollectionPager1; 

    private void Page_Load(object sender, System.EventArgs e) 
    { 
        //Create DataSet DataSet SampleDataSet = SampleData();
        //Set DataSource of Pager to Sample Data 
   
        CollectionPager1.DataSource = SampleDataSet.Tables[0].DefaultView;
        //Let the Pager know what Control it needs to DataBind during the PreRender.
        
        CollectionPager1.BindToControl = Repeater1; //UPDATED! 
        //The Control now takes the object you are binding to,
        // instead of the name of it (as a string) 

        //Set the DataSource of the Repeater to the PagedData coming from the Pager. 
        Repeater1.DataSource = CollectionPager1.DataSourcePaged; 

        //Done!

    } 
    
    protected override void Render(HtmlTextWriter writer)
    {
        //Example of how to have the results show up in a different spot.
        litDifferentResultsFormat.Text = 
          CollectionPager1.BuildResults("Currently viewing {0} through {1}");

        //Example of how to have a second pager that is tied in...
        litTopPager.Text = CollectionPager1.RenderedHtml;

        base.Render (writer);
    }
    
    ... other stuff ...
}

Các thuộc tính Control

Điều khiển này có rất nhiều các tính năng cho phép tùy biến xuất hiện của nó. Mỗi phần cho phép bạn chỉ định CssClass và Style. Bạn cũng có thể điều khiển ký tự được sử dụng giữa các số trang. Dưới đây là một ảnh chụp màn hình của các thuộc tính có sẵn:

CollectionPagerProperties2.gif

Cài đặt:

Cài đặt điều khiển

Bạn có thể cài đặt điều khiển theo chuẩn:
  • Tạo ra thư mục "bin" bên trong thư mục gốc ứng dụng của trang web bạn (nếu nó chưa có).
  • Sao chép các tập tin assembly CollectionPager.dll vào thư mục.
Cài đặt các demo

Giải nén tập tin ZIP với các bản demo. Nhấp chuột phải vào thư mục con "CollectionPagerExample" và chọn Properties. Trên cửa sổ Properties, bấm vào "web-sharing" và Check "Share this folder".

Sau đó bạn sẽ có thể duyệt đến:
http://localhost/CollectionPagerExample/Example.aspx.

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML