FreeGridv0.7.0한국어

Row selection

Single or multiple selection with checkboxes, Ctrl and Shift.

Code for this demo

import { createGrid, type GridApi } from '@freegridjs/core';
import { demoColumns, makeRows } from '../data';
import { button, select, separator, tr, type DemoContext } from '../ui';

export default function mount(ctx: DemoContext) {
  const { lang } = ctx;
  const data = makeRows(5000);
  let grid: GridApi;
  const create = (mode: 'single' | 'multiple') => {
    grid?.destroy();
    grid = createGrid(ctx.host, {
      columns: demoColumns(lang),
      data,
      rowSelection: mode,
      getRowId: row => String(row.id), // keeps the selection when data is replaced
      locale: lang,
    });
    grid.on('selectionChange', e => {
      const ids = e.selected.slice(0, 8).map(r => r.id).join(', ');
      ctx.log(`selectionChange → ${e.selected.length} ${e.selected.length > 8 ? `[${ids}, …]` : `[${ids}]`}`);
    });
  };
  create('multiple');

  select(ctx, tr(lang, { en: 'Mode', ko: '모드' }), [['multiple', tr(lang, { en: 'Multiple', ko: '다중' })], ['single', tr(lang, { en: 'Single', ko: '단일' })]], 'multiple',
    v => create(v));
  separator(ctx);
  button(ctx, tr(lang, { en: 'Select all', ko: '전체 선택' }), () => grid.selectAll());
  button(ctx, tr(lang, { en: 'Clear', ko: '선택 해제' }), () => grid.deselectAll());
  button(ctx, tr(lang, { en: 'Log selected names', ko: '선택한 이름 출력' }), () =>
    ctx.log(grid.getSelectedRows().slice(0, 10).map(r => r.name).join(', ') || '—'));
}