소년포비의 세계정복!!

Gridview에 DataSet을 DataBind()했을 때 페이징 하기 본문

프로그램 세상/ASP.NET

Gridview에 DataSet을 DataBind()했을 때 페이징 하기

소년포비 2009. 10. 8. 11:09

이것저것 하다보면 GridView에 수동으로 다른 데이터를 바인딩 시켜야 할 때가 있다. 최근에 사용했을 때는 비연결지향으로 DataSet을 얻어서 DataBind를 시켰는데 이렇게 했을때 페이징이 제대로 되지 않는 문제점이 있었다.

GridView에 DataBide를 꼭 저렇게 안하고 아래에 적혀있듯이 Datasource자체를 바꿔주는 방법을 취할 수도 있고 그럴게 했을 경우는 큰 문제가 생기지 않을 것으로 예상된다.(테스트는 못해봤지만 일단 타입이 동일하므로...)

페이징을 하려면 별도로 비하인드 코드에서 처리르 해주어댜 한다.

해당 Gridview의 속성에서 PageIndexChanging를 생성해 주고 그 Behind코드에 다음 코드를 넣어주면 된다.

  1. protected void AllItemGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)  
  2. {  
  3.     AllItemGridView.PageIndex = e.NewPageIndex;  
  4.     AllItemGridView.DataBind();  
  5. }  


Gridview의 이름이 AllitemGridView이다. 내가 찾은 코드중에는 가장 간단한 코드이며 잘 작동한다.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="0" CellSpacing="1" BorderWidth="2" AllowPaging="true" OnPageIndexChanging="AllItemGridView_PageIndexChanging"
                    BackColor="#bbbbbb" ForeColor="#333333" GridLines="None" Width="100%">

CS단에서 바인딩하는 경우에 이런식으로 처리하면 잘된다.