4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Handsontable】別セルの値に応じてドロップダウンリストを連携させる

Last updated at Posted at 2019-03-04

#概要
県名→市町村名等、前のセルの入力値に応じて後ろのセルのドロップダウンリストを変えたい場合の対応方法を記述する。
以下のコード例で、1列名のメーカー名の値に応じて、2列目の車種名の選択肢が変わる例を紹介する。

#コード例

See the Pen OqMQrw by HK0n (@hk0n) on CodePen.

#コード説明
以下3つの要素を利用している。

  • afterChange
  • setDataAtCell
  • setCellMeta

##afterChange
https://handsontable.com/docs/6.2.2/Hooks.html#event:afterChange
セルのデータが変更された場合のイベント。
"changes"には[["変更された行","変更された列","変更前の値","変更後の値"]]という形でデータが格納されている。
今回は、変更された列が車種(1列目(changes[0][1]=0))の場合に、後述のsetDataAtCellとsetCellMetaを実行する。

##setDataAtCell
https://handsontable.com/docs/6.2.2/Core.html#setDataAtCell
セルのデータが書き換えるためのメソッド。

setDataAtCell("対象の行","対象の列","書き換える値")

コード例では、メーカー名が変わった場合に、車種の値を空白にする処理を入れている。
これが無いと、メーカー名、車種名を入力した後にメーカー名を変更した場合、意図しない組み合わせになってしまう。
(無い場合の例)
image.pngimage.png

##setCellMeta
https://handsontable.com/docs/6.2.2/Core.html#setCellMeta

セルのメタデータを書き換えるためのメソッド。

setCellMeta("対象の行","対象の列","対象のプロパティ名","変更後の値")

コード例では、メーカー名の値に応じて車種のselectOptionsを書き換える処理を行っている。

4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?