Có 1 điều mà các lập trình viên rất hay gặp phải khi lập trình với ASP.Net, đó là phân trang khi sử dụng DataList và Repeater ( còn GridView thì VS 2005 đã hỗ trợ sẵn) Trong bài viết này tôi giới thiệu với các bạn 1 class library được viết sẵn để sử lý các vấn đề này một cách hết sức đơn giản, khả năng tùy biến của nó cũng là khá hay, đó chính là CollectionPager.dll
Trước hết bạn phải download file dll trên ở đây: Download
Cách sử dụng hết sức đơn giản:
1) Tạo 1 website mới trong VS.
2) Kích chuột phải vào tên Website chọn Add References, chọn đến file dll mà bạn vừa giải nén ra, rồi OK.
Tại trang code .aspx khai báo để sử dụng CollectionPager
<%@ Register TagPrefix="cc1" Namespace="SiteUtils" Assembly="CollectionPager" %>
Tiếp theo, kéo vào 1 DataList, đặt tên là dtlMessages
<asp:DataList ID="dtlMessages" runat="server"></asp:DataList>
Gọi 1 control CollectionPager (cái này bạn có thể đặt ở một vị trí bất kỳ trong trang)
<cc1:CollectionPager ID="CollectionPager1" runat="server" BackText="« Trước" FirstText="-- Đầu"LabelText="Trang:" LastText="Cuối" NextText="Sau »" ResultsFormat="Kết quả từ {0}-{1} (của {2}) bài viết" ShowFirstLast="True" SliderSize="5" PagingMode="PostBack"></cc1:CollectionPager>
Bạn có thể tùy biến các Label theo ý muốn của bạn, như ở đây tôi đã customize về tiếng Việt.
Như vậy là bạn đã xong bước khai báo, và đưa các control cần sử dụng vào trong trang web của mình.
Tại trang codebehind, các bạn lấy ra một DataSet chứa dữ liệu cần phân trang, đặt tên là ds, sau đó viết đoạn code sau:
CollectionPager1.MaxPages = 10000;
CollectionPager1.PageSize = 10; // số items hiển thị trên một trang
CollectionPager1.DataSource = ds.Tables[0].DefaultView;
CollectionPager1.BindToControl = dtlMessages;
dtlMessages.DataSource = CollectionPager1.DataSourcePaged;
dtlMessages.DataBind();
Rất đơn giản phải không các bạn, chúc các bạn thành công!
Đoàn Thành Nhân - http://lichsu.vn
0 nhận xét:
Đăng nhận xét