ReoGrid ReoGrid Web

入力規則でドロップダウン

範囲に Excel 風の入力規則を付けます。list ルールはドロップダウンを自動描画し(専用のセルタイプは不要)、他のルールタイプは範囲外の入力を拒否します。v1.4 で追加されました。

Pro 限定。 setValidation には有効な licenseKey が必要です。読み取り(getValidationsvalidate)は Lite でも動くため、Pro で付けたルールは Lite ビューアでも有効です。

明示的なリストからドロップダウン

import { createReogrid } from '@reogrid/pro';

const grid = createReogrid('#grid', { licenseKey: 'YOUR-LICENSE-KEY' });
const ws = grid.worksheet;

ws.range('B2:B100').setValidation({
  type: 'list',
  options: ['Draft', 'In review', 'Done'],
  showInputMessage: true,
  inputTitle: 'ステータス',
  inputMessage: 'ドロップダウンからステータスを選んでください。',
});

範囲内の各セルにドロップダウンの矢印が表示され、リストの値のみを受け付けます。

範囲を参照するドロップダウン

インラインの options の代わりに、同一シートの source 範囲や数式を使えます(両者は排他)。選択肢が別の列にある場合に便利です:

ws.range('A2:A100').setValidation({
  type: 'list',
  source: '=$H$1:$H$5', // 使用時に解決
  showDropdown: true,    // ドロップダウン矢印を表示(既定 true)
});

範囲外の数値をブロック

whole / decimal / date / time / textLength ルールは operatorvalue1between / notBetweenvalue2 も)で判定します。編集をブロックするのは stop スタイルのみで、warninginformation は助言的です:

// 1〜100 の整数 — それ以外は拒否。
ws.range('C2:C100').setValidation({
  type: 'whole',
  operator: 'between',
  value1: 1,
  value2: 100,
  errorMessage: '数量は 1〜100 の整数で入力してください。',
});

// 今日以降の期日 — 助言的な警告のみ。
ws.range('E2:E100').setValidation({
  type: 'date',
  operator: 'greaterThanOrEqual',
  value1: '=TODAY()',
  alertStyle: 'warning',
  errorMessage: '期日が過去の日付です。',
});

演算子: between · notBetween · equal · notEqual · greaterThan · lessThan · greaterThanOrEqual · lessThanOrEqual

カスタム数式ルール

真の値を返す数式なら合格です。相対参照は範囲の左上を基準にオフセットされます:

// G2:G100 は左隣の値より大きいこと。
ws.range('G2:G100').setValidation({
  type: 'custom',
  formula: '=G2>F2',
  errorMessage: '前の列より大きい値を入力してください。',
});

読み取りと削除

ws.getValidationAt(1, 1); // セルに掛かるルール、なければ undefined
ws.getValidations();      // シート上の全ルール
ws.validate(1, 1, 'Foo'); // 書き込まずに値を検証

ws.range('B2:B100').removeValidation();
ws.clearValidations();    // シート上の全ルールを削除

ルールは xlsx の <dataValidations> と ReoGrid JSON でラウンドトリップします。

関連

ニュースレター

開発の最新情報をお届けします

新しいリリース・機能追加・お知らせをいち早く受け取るには、
メーリングリストにご登録ください。