본문 바로가기

asp.net DataList컨트롤에서 페이징구현

반응형
ASP.NET DataList 페이징 구현하기

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;

 

반응형

댓글


Copyright ⓒ SmartWeb All rights reserved.