제목 : 저와 비슷한 초반 난관을...^^
글번호:
|
|
1106
|
작성자:
|
|
hatukoi
|
작성일:
|
|
2006/05/11 오전 10:03:00 (2006/05/11 오후 5:53:00 수정)
|
조회수:
|
|
2525
|
저도 실무 들어가서 초반에 좀 애먹은 부분이기도 합니다.^^
다행인건 님과 다르게 전 소스를 볼수 있어서 분석하고 어느정도 이해를 했지만 말이죠.
저는 2종류의 소스를 보았습니다만...C#으로 짜여진 컴포넌트는 소스만 봐서는 이해는 어느정도 해도 짜라면 저는 아직도 잘 모르겟더라구요...
어느정도 윈폼에 대한 감각도 있어야 할거 같고...웹컨트롤들을 직접 코드상에서 호출해서
이미지경로라든지 테이블이라던지 만들고 추상적으로 하더군요.이벤트까지도...
다른 한가지 방법은 자바스크립트를 이용하는 것입니다.
그런데 두가지 다 공히 적용되는 것은 쿼리부분입니다.
이부분만 이해하셔도 어느정도 시작하시는데 용이하실거 같습니다.
페이징은 어차피 약간의 눈속임이라는게 제 생각입니다.우리눈에는 잘 나눠서 보여주는 거 같지만 애초에 바인딩할 데이타테이블 자체를 해당 페이지 숫자에 맞춰서 보여줄 숫자
만큼만 딱 정보저장후 바인딩 한다는 것이죠.
쿼리는 대충 이런 형태입니다.
select top @PageSize * from Board
where id not in
(select top @PageSize*(@PageNum-1) id from board order by seqn)
order by seqn
@PageSize : 한페이지에 보여 줄 데이타 양
@PageNum : 현재 보여줄 페이지
*order by 하위쿼리 및 상위쿼리에 다 해주시거나 안해주셔야 합니다.
id : 일종의 유일값(프라이머리 키)
코드상에서는 int PageSize = 8 이런식으로 선언하여 아예 그리드가 한번에 보여줄
데이타의 숫자를 정의합니다.변하지 않을 것이니까 const 로 선언하셔도 좋을거 같습니다.
그럼 자바스크립트는 어떻게 짜느냐...
일단 페이징을 완료하려면 몇가지 데이타가 필요합니다.
1.한번에 보여줄 데이타 수
2.전체 데이타 숫자
1번의 위에서 정의 했고 2번을 위해서 페이징전에 select count(*)를 써서 현재 데이타 총수를 구하고 1번에서 정한 숫자로 나눈 몫에 +1을 하면 총 페이지 숫자가 나옵니다.
물론 나머지 가 0일경우는 +1을 해주면 안되겟죠.
화면상에서 처리할 때는 일단 라벨을 하나 떨구고 html을 반복적으로 조합합니다.
히든컨트롤을 구석 아무데나 놓고 기본값은 1로 잡습니다.
일단 ◁◁ 와 ▷▷는 이미지가 필요하겟죠...
lblPaging.text="<a href='그리드페이지.aspx?PageNum="+
히든컨트롤값-1+"'><img src....></a>"; 이런것을 for구문 바깥에 쌉니다.
(◁◁ 의 기본생성)
for(i=1;i<=페이지 숫자;i++)
{
lblPaging.text="<a href='그리드페이지.aspx?PageNum="+i+"'>["+i+"]</a>";
}
lblPaging.text="<a href='그리드페이지.aspx?PageNum="+
히든컨트롤값+1+"'><img src....></a>";
(▷▷ 의 기본생성)
결론을 말하면 쿼리를 페이징에 알맞게 생성 후 쿼리스트링을 매번 주면서 그 값을
페이지숫자로 잡아서 로드이벤트에서 그 값을 이용하여 매번 바인딩 하는겁니다.
이해가 되셧는지 모르겠습니다.
저도 그런 로직이란건 대충 이해하는데 적용할때 마다 헷갈려서 소스를 다시 보면서
조금씩 고쳐서 쓰고 있습니다...
조금이나마 도움이 되셧길 바라구요.
궁금하시거나 틀린점있으면 답글 달아주세요.
이상 박선생님의 열혈제자 hatukoi 였습니다.
|
hatukoi
2006-05-11 오후 3:11:55
|
제가 쓰고도 쭉 읽어보니 두서가 없네요...이거 안하니만 못한건 아닌지;;
|
|
|
wowjjang83
2006-05-11 오후 7:27:20
|
이럼 안되는데 시간이 지나면 지날수록 많은 글자수의 압박을 느낍니다^^
나~ 피곤해~ ㅎㅎ
|
|
|
signal11
2006-05-11 오후 10:26:12
|
많은 도움이 됬습니다. 일단은 내일 한번 해봐야 겠네요. 요새 이거 하다 저거 하다 정신이 하나도 없어서... 암튼 매번 감사 드립니다 ^^
|
|
|
|