Paging cho Asp.net Repeater

Như chúng ta đã biết Repeater không hỗ trợ Paging vì vậy chúng ta sẽ khắc phục nó bằng đoạn code sau:

<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”pagedrepeater.aspx.cs” Inherits=”PagedRepeater” %>
<html>
<head>Paged Repeater
</head>
<body>
<form runat=”server”>
<asp:Repeater ID=”rptPages” Runat=”server”>
<HeaderTemplate>
<table cellpadding=”0″ cellspacing=”0″ border=”0″>
<tr class=”text”>
<td><b>Page: 

<td>
</HeaderTemplate>
<ItemTemplate>
<asp:LinkButton ID=”btnPage”
CommandName=”Page”
CommandArgument=” <%#
Container.DataItem %>”
CssClass=”text”
Runat=”server”> <%# Container.DataItem %>
</asp:LinkButton> 
</ItemTemplate>
<FooterTemplate>
</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:Repeater ID=”rptItems” runat=”server”>
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li><%# Eval(“pkItemID”) %>: <%# Eval(“Description”) %></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>

.cs file

using System;
using System.Data;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class PagedRepeater : System.Web.UI.Page
{
public int PageNumber
{
get
{
if (ViewState[“PageNumber”] != null)
return Convert.ToInt32(ViewState[“PageNumber”]);
else
return 0;
}
set
{
ViewState[“PageNumber”] = value;
}
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
rptPages.ItemCommand +=
new RepeaterCommandEventHandler(rptPages_ItemCommand);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
LoadData();
}
private void LoadData()
{
SqlConnection cn = new SqlConnection(“yourconnectiongoeshere”);
cn.Open();
SqlDataAdapter da = new SqlDataAdapter(“yourquerygoeshere”, cn);
DataTable dt = new DataTable();
da.Fill(dt);
cn.Close();
PagedDataSource pgitems = new PagedDataSource();
DataView dv = new DataView(dt);
pgitems.DataSource = dv;
pgitems.AllowPaging = true;
pgitems.PageSize = 25;
pgitems.CurrentPageIndex = PageNumber;
if (pgitems.PageCount > 1)
{
rptPages.Visible = true;
ArrayList pages = new ArrayList();
for (int i = 0; i < pgitems.PageCount; i++)
pages.Add((i + 1).ToString());
rptPages.DataSource = pages;
rptPages.DataBind();
}
else
rptPages.Visible = false;
rptItems.DataSource = pgitems;
rptItems.DataBind();
}
void rptPages_ItemCommand(object source, RepeaterCommandEventArgs e)
{
PageNumber = Convert.ToInt32(e.CommandArgument) – 1;
LoadData();
}
}

Sưu tầm

Advertisements

Về tieuyeuit
Lập trình viên Asp.net Tôi chia sẻ một,bạn chia sẻ một và chúng ta có rất nhiều!

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: