정확한 언어와 프레임 워크를 지정하지 않았기 때문에 사용하고 있습니다. 나는 페이징을 성공적으로 만드는 방법에 대한 일반적인 대답을 제공하려고 노력할 것이다.
나는 웹 사이트가 있거나 다음 및 이전 단추가있는 Windows 응용 프로그램이라고 가정합니다.
- 현재 인덱스
- 목록 크기 이제 당신은 당신이 (20)에 의해 수를 분할 페이지 당 20 개 개의 항목을하려는 경우
:
당신은 응용 프로그램에서 다음이 필요합니다 해당 부서의 나머지 부분이 있다면 여분의 페이지가 있음을 알고 있습니다. 우리가 인쇄 할 페이지 수를 알고
예
ListSize = 10
AmountOfPages = ListSize/20
if ((ListSize % 20) != 0)
AmountOfPages += 1;
지금, 당신이 그들 모두 여부를 인쇄 할 decied 수 있습니다, 그것은 당신의 선택은 물론이다.
다음 단계는 현재 색인에서 증가 및 감소를 나타내는 다음 및 이전 버튼을 갖는 것입니다.
목록 호출기에서 Previous, Next 또는 Number를 누르면 현재 시작 색인과 끝 색인을 쉽게 계산할 수 있습니다.
당신이 현재 페이지에있는 항목의 총 금액이 20이 될 수 있다는 것을 알고 그 규칙에 가면 가장 작은 인덱스가 0이기 때문에 할 수 있습니다 항상 :
지수 * 20 지수 * 20 + 20 목록의 현재 시작 색인과 현재 목록의 끝 색인을 가져옵니다.
예
CurrentIndex = 0
ListStart = CurrentIndex * 20
ListEnd = CurrentIndex * 20 + 20
이 발생합니다 :
ListStart = 0
ListEnd = 20
그리고 당신은 페이지 인덱스 1 인 경우 다음과 같은
ListStart = 20
ListEnd = 40
지금 모든 당신이 얻을 것이다 해야 할 항목 수 및 얼마나 많은 항목을 가져올 지에 대한 제한을 설정합니다. 항목.
물론 이것은 귀하의 목록에 사용 된 데이터 소스 또는 데이터 템플릿에 따라 다릅니다. 사용중인 템플릿 또는 데이터 소스의 API를 조사해야합니다.
하지만 여기에 기본 의사 문 보면 일반적인 생각 :
당신은 단지 색인 주어진 시작에 의해 제한 및 종료하기 위해 데이터 소스 또는 SQL 쿼리를 말하고 싶어
select Columns from Source limit From, To
. 위의 예는 다른 데이터 소스보다 SQL에 더 많이 적용됩니다. 하지만 문제를 해결하는 방법에 대한 아이디어를 줄 것입니다. 당신이 그 물론 페이지 인덱스이며, 첫 번째 페이지에있는 경우 5 - 당신이 다시 게시물을 알고있는 것처럼
편집
당신은 1 싶어. 그리고 당신이 다음을 누를 경우 6 - 10을 원합니다.
위의 논리를 따르면 페이지 색인을 가지며 그 때마다 5를 더하는 것이 좋을 것입니다 이전을 누르면 "다음"을 누르고 5로 줄입니다.
이 다소
예
doPaging(int direction)
{
// Direction represents the previous and next to make it easier
if (direction == 0) // previous
CurrentIndex -= 5
else if (direction == 1) // next
CurrentIndex += 5
if (CurrentIndex > MaxIndex || CurrentIndex < 0)
CurrentIndex = 0
}
는 전 세계적으로 쉽게해야합니다 앞의 예에서, 최대 인덱스를 정의했다고 가정합니다 다음을 초래할 것입니다.
이제
CurrentIndex = 0
그리고 전화 doPaging(1)
이있는 경우 CurrentIndex의 결과는 CurrentIndex = 5
될 것입니다. 이제 이것을 사용하여 탐색 할 수있는 현재 색인을 반복 할 수 있습니다.
SQL 서버에 대해서 당신이 할 수있는 look into this
어떤 언어/프레임 워크 행을 제한? –
ASPNET (DOTNET) – Nila
에서 어떤 작업을하고 있습니까? SQL Server를 사용하고있는 데이터 소스의 종류를 알려주십시오. LINQ to SQL? 개체 배열? –