Phân trang cho Repeater trong Asp.net
Repeater có rất nhiều ưu điểm, ưu điểm lớn nhất đó là khả năng tùy biến rất cao, nhưng nó lại có một yếu điểm đó là không hỗ trợ phân trang như các control khác, bài viết sau sẽ hướng dẫn bạn thực hiện phân trang trong repeater
Code HTML
Đầu tiên bạn kéo 2 control repeater vào. Control Repeater1 sẽ làm nhiệm vụ hiển thị dữ liệu từ database. Control rptPages sẽ làm nhiệm vụ hiển thị trang cho Repeater1
Code HTML
Đầu tiên bạn kéo 2 control repeater vào. Control Repeater1 sẽ làm nhiệm vụ hiển thị dữ liệu từ database. Control rptPages sẽ làm nhiệm vụ hiển thị trang cho Repeater1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <div> <asp:Repeater ID= "Repeater1" runat= "server" > <ItemTemplate> <div style= "overflow: hidden;" > <div style= "float: left; margin: 1px; width: 70px; background: #EAEAFF; text-align:center;" > <%# Eval ( "ID" ) %> </div> <div style= "float: left; margin: 1px; width: 150px; background: #EAEAFF; text-align:center;" > <%# Eval ( "Items" ) %> </div> </div> </ItemTemplate> </asp:Repeater> <div style= "overflow: hidden;" > <asp:Repeater ID= "rptPages" runat= "server" onitemcommand= "rptPages_ItemCommand1" > <ItemTemplate> <asp:LinkButton ID= "btnPage" style= "padding:1px 3px; margin:1px; background:#ccc; border:solid 1px #666; font:8pt tahoma;" CommandName= "Page" CommandArgument= "<%# Container.DataItem %>" runat= "server" ><%# Container.DataItem %> </asp:LinkButton> </ItemTemplate> </asp:Repeater> </div> </div> |
Và trong code behind bạn viết thêm 2 hàm và 1 sự kiện click Item cho rptPages nữa như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { LoadData(); } } void LoadData() { string constr = System.Web.Configuration.WebConfigurationManager.ConnectionStrings[ "conn" ].ConnectionString; SqlDataAdapter da = new SqlDataAdapter( "select * from rpt_items" , constr); DataTable dt = new DataTable(); da.Fill(dt); PagedDataSource pgitems = new PagedDataSource(); System.Data.DataView dv = new System.Data.DataView(dt); pgitems.DataSource = dv; pgitems.AllowPaging = true; pgitems.PageSize = 5; pgitems.CurrentPageIndex = PageNumber; if (pgitems.PageCount > 1) { rptPages.Visible = true; System.Collections.ArrayList pages = new System.Collections.ArrayList(); for (int i = 0; i < pgitems.PageCount; i++) pages.Add((i + 1).ToString()); rptPages.DataSource = pages; rptPages.DataBind(); } else rptPages.Visible = false; Repeater1.DataSource = pgitems; Repeater1.DataBind(); } public int PageNumber { get { if (ViewState[ "PageNumber" ] != null) return Convert.ToInt32(ViewState[ "PageNumber" ]); else return 0; } set { ViewState[ "PageNumber" ] = value; } } protected void rptPages_ItemCommand1(object source, RepeaterCommandEventArgs e) { PageNumber = Convert.ToInt32(e.CommandArgument) - 1; LoadData(); } |
OK! tưởng khó nhưng rất đơn giản phải không nào, hy vọng bài viết sẽ giúp ích cho bạn trong việc thực hiện lập trình trong asp.net. Nếu thấy bài viết có ý nghĩa, vui lòng chia sẻ với những người bạn của bạn nhé
Comments[ 0 ]
Đăng nhận xét