ASP.NET 2.0의 GridView 나 DetailsView는 클릭한번으로 페이징 기능을 구현할 수 있다. 하지만 마음먹은대로 표시하는 모양과 기능들을 조작하기가 상당히 복잡하다.
이에 반해 DataList는 사용의 자유도가 상당히 높은반면 GridView 에서 기본으로 제공하는 페이징, 소팅등의 기능을 직접 구현해 주어야 한다. 그 중에서도 DataList에서 페이징을 구현하기 위해선 PagedDataSource 를 이용하면 간단하게 할 수 있다.
SqlConnection con = new SqlConnection("ConnectionString");
con.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM BOARD", con);
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds);
PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds.Tables[0].DefaultView;
pds.AllowPaging = true;
pds.PageSize = 10;
pds.CurrentPageIndex = CurrentPage;
DataList1.DataSource = pds;
DataList1.DataBind();
ASP 내에서는 DataList1 내에 표시하고 싶은 곳에
<%# Eval("NUMBER") %> 컬럼명을 적어주면 표시가 된다.
그리고 현재 페이지를 가져오는 과정은
public int CurrentPage
{
get
{
object o = this.ViewState["_CurrentPage"];
if (o == null)
return 0;
else
return (int)o;
}
set
{
this.ViewState["_CurrentPage"] = value;
}
}
함수를 넣어주면 된다.
그리고 전페이지와 다음페이지 버튼을 만들고 Click 이벤트를 만든다음
CurrentPage += 1 과 CurrentPage -= 1 을 각각 넣고 다시 빌드하면
페이징을 구현할 수 있다.
btnPrev.Enabled = !pds.IsFirstPage;
btnNext.Enabled = !pds.IsLastPage;