'datalist'에 해당되는 글 1건

  1. 2009.08.08 ASP.NET DataList 페이징 구현하기 1
2009. 8. 8. 10:55

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;

 출처
http://www.prily.net/blog/?p=193

Posted by 굿데이