FreeGridv1.15.1English

페이지 나누기

쪽 이동 막대와 쪽당 행 수 선택으로 한 쪽씩 보여 줍니다. setPage, setPageSize, pageChange로 코드에서도 다루며 서버 데이터에도 씁니다.

실행 예제페이지 나누기

쪽 이동 막대와 쪽당 행 수 선택으로 한 쪽씩 보여 줍니다.

이 데모의 코드
import { createGrid } from '@freegridjs/core';
import { demoColumns, makeRows } from '../data';
import { button, select, separator, text, tr, type DemoContext } from '../ui';

export default function mount(ctx: DemoContext) {
  const { lang } = ctx;
  const h = (en: string, ko: string) => tr(lang, { en, ko });
  const grid = createGrid(ctx.host, {
    columns: demoColumns(lang),
    data: makeRows(1000),
    locale: lang,
    rowNumbers: true, // numbers continue from page to page
    pagination: { pageSize: 50, pageSizes: [20, 50, 100], pageNumbers: 5, jump: true },
  });
  grid.on('pageChange', e => ctx.log(`pageChange → ${e.page + 1} / ${e.pageCount} (${e.pageSize})`));

  text(ctx, h('Use the pager under the rows or the buttons. Sorting or filtering goes back to the first page.',
    '아래 쪽 이동 막대나 버튼으로 넘겨 보세요. 정렬하거나 필터를 바꾸면 첫 쪽으로 돌아갑니다.'));
  separator(ctx);
  button(ctx, h('First page', '첫 쪽'), () => grid.setPage(0));
  button(ctx, h('Page 5', '5쪽'), () => grid.setPage(4));
  button(ctx, h('Last page', '마지막 쪽'), () => grid.setPage(grid.getPageCount() - 1));
  select(ctx, h('Rows per page', '쪽당 행 수'), [['20', '20'], ['50', '50'], ['100', '100']], '50', v => grid.setPageSize(Number(v)));
  return grid;
}

pagination을 켜면 한 번에 한 쪽씩 보여 주고 행 아래에 쪽 이동 막대를 붙입니다. 처음·이전·다음·마지막 쪽으로 이동할 수 있고, pageSizes를 주면 쪽당 행 수도 고를 수 있습니다. 정렬하거나 필터를 바꾸면 첫 쪽으로 돌아가고, 행 번호는 쪽이 바뀌어도 이어집니다.

쪽 이동 막대의 동작은 모두 코드에서 부를 수 있는 같은 메서드를 거칩니다. setPage(0부터 시작)와 setPageSize입니다. pageChange는 새 쪽, 쪽당 행 수, 전체 쪽 수를 알려 주고, beforePageChange에서는 저장하지 않은 편집이 있을 때처럼 이동을 막을 수 있습니다.

const grid = createGrid(el, {
  columns,
  data,
  pagination: { pageSize: 50, pageSizes: [20, 50, 100] },   // true = 100 rows a page
});

grid.setPage(2);            // 0-based: the third page
grid.getPage();             // 2
grid.getPageCount();
grid.setPageSize(100);
grid.on('pageChange', e => console.log(e.page, e.pageSize, e.pageCount));
grid.on('beforePageChange', e => { if (hasUnsavedEdits()) e.cancel(); });

서버 데이터에서도 쪽을 나눌 수 있습니다. datasource와 함께 pagination을 주면 한 쪽이 요청 한 번이 됩니다. 서버 데이터와 무한 스크롤을 보세요.

페이지 번호와 이동 칸

pageNumbers와 jump로 페이지 번호 버튼과 페이지 입력칸을 넣습니다. 자세한 내용:

옵션, 메서드, 이벤트

이름타입설명
paginationboolean | { pageSize?, pageSizes?, pageNumbers?, jump? }한 쪽씩 보여 주고 아래에 쪽 이동 막대를 둡니다. true면 쪽당 100행. pageSizes를 주면 쪽당 행 수를 고를 수 있습니다.
setPage(n) / getPage() / getPageCount()void / number쪽을 이동합니다(0부터 시작, 있는 쪽 범위로 맞춤).
setPageSize(n) / getPageSize()void / number쪽당 행 수를 바꾸거나 읽습니다.
pageChange / beforePageChangeevents쪽이나 쪽당 행 수가 바뀌었습니다({ page, pageSize, pageCount }). 바뀌기 전 이벤트에서 cancel()로 막을 수 있습니다.

이 페이지에 대한 질문

행을 쪽 단위로 나눠 보여 주려면?

pagination: { pageSize: 50, pageSizes: [20, 50, 100] }을 주세요. 행 아래에 쪽 이동 막대가 생기고, setPage, setPageSize, pageChange로 코드에서도 다룹니다.