반응형
그리드뷰로 간단한 게시판을 만들 때,
데이터 소스로 연결하지 않고 뿌려주는 형식으로 했을 때는
자동으로 페이징 처리가 되질 않는데,
이때,
밑과 같은 처리문을 써줍니다.
밑과 같이 써주어도 필자의 경우에는 2번 페이지를 누르면
그리드뷰가 사라지는 등 아무런 효과가 없어서 당황했었습니다.
그러던 차에 2번 페이지를 누르고, 다시 리스트페이지를 들어가면 2번페이지가
불러와지더군요. 이상하다..이상하다..하던 차에 리스트 페이지 띄우는 구문에 있는
메서드 중 Bindata를 끌고와서 페이징 처리 후에 다시 Bindata를
하게끔 하니 정상적인 페이지 처리가 되었습니다 !
혹시나 저와 증상이 똑같으신 분들은 이렇게 처리하시면 될거에요.
<asp:GridView
ID="GridView1" runat="server" AutoGenerateColumns="False"
Font-Size="Small" AllowPaging="True"
OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="13"
Width="761px" CellPadding="0"
AllowSorting="True" Height="16px" BackColor="#DEBA84"
BorderColor="#DEBA84" BorderStyle="None" BorderWidth="0px"
Font-Bold="False" Font-Names="맑은 고딕">
기본적인 것은 제외하고, GridView1_PageIndexChanging의 메서드를 보게 되면 (cs파일에 있는)
cs - GridView1_PageIndexChanging
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) //페이지가 로드 될 때
{ BinData(); //로드 시 BinData() 라는 동작이 되게끔 명령한다.
}
}
{ BinData(); //로드 시 BinData() 라는 동작이 되게끔 명령한다.
}
}
private void BinData()
{
DBConn conn = new DBConn();
conn.Open();
DataSet ds = conn.GetDataSet("Select * from jboardfinal3 order by gr_id desc, gr_pos asc");
// DataSource 지정
GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.PageIndex = (Session["page"] == null)
? 0 : (int)Session["page"];
GridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
//this.GridView1.PageIndex = e.NewPageIndex;
//DisplayData();
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
GridView1.DataBind();
Session["page"] = GridView1.PageIndex;
BinData();
//이 부분이 없으니 그리드뷰가 페이지 전환 시 나타나지 않더군요.
페이지 전환시에도 마지막에 BinData() 명령을 실행해주게끔 하니 정상적으로 처리가 되었습니다.
}
위와 같은 방법으로
http://shakej.co1.kr 의 공연 정보 그리드뷰 게시판의 페이징 처리를 했습니다.
반응형
'옛글 > ASP.NET' 카테고리의 다른 글
iframe 가로스크롤만 없애기!(세로스크롤도 가능) (2) | 2010.10.28 |
---|---|
쉽게 설명한 지도 API 사용법과 예제 -1 (0) | 2010.10.28 |
이번에 ASP.NET으로 제작하는 UHI(underground hiphop info) 전체틀 (0) | 2010.10.28 |
(ASP.NET) 보안의 전반적인 부분 (0) | 2010.10.28 |
(ASP.NET) 사이트 탐색/메뉴 (0) | 2010.10.28 |