0
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?

【ローコードのSKE】階層連動ドロップダウン

Last updated at Posted at 2025-04-12

今回の記事は、SKEで階層連動ドロップダウンのサンプルです。

テーブルを準備する

CREATE TABLE "区分1マスタ"
(
  "区分1コード" character varying(10) NOT NULL,
  "区分1名" character varying(10),
  CONSTRAINT "区分1マスタ_pkey" PRIMARY KEY ("区分1コード")
);
CREATE TABLE "区分2マスタ"
(
  "区分1コード" character varying(10) NOT NULL,
  "区分2コード" character varying(10) NOT NULL,
  "区分2名称" character varying(10),
  CONSTRAINT "区分2マスタ_pkey" PRIMARY KEY ("区分1コード", "区分2コード")
);

image.png

共通設定

以下のテーブルを利用して、サンプルを作成します。

CREATE TABLE "テストテーブル"
(
  "主キー" integer NOT NULL,
  "名称" character varying(10),
  "区分1コード" character varying(10),
  "区分2コード" character varying(10),
  "作成者" character varying(20),
  "作成日時" timestamp without time zone,
  "最終更新者" character varying(20),
  "最終更新日時" timestamp without time zone,
  CONSTRAINT "テストテーブル_pkey" PRIMARY KEY ("主キー")
)

区分1コードと区分2コードは文字列ですから、タイプを省略しても大丈夫です。
image.png

入力ダイアログ

区分1と区分2はアドオンの可読性のためIDを設定します。タイプはコンボを設定します。ソースのアドオンを登録します。
image.png
新規モードの値は空白を設定します。区分1の入力枠操作アドオンを登録します。
image.png

区分1のリスト内容は区分1マスタから取得します。

fd区分1のソース
function(initFormData,dbData,initData,result){
    return db.select("select * from 区分1マスタ order by 区分1コード")
    .map({
        value:"区分1コード",
        option:"区分1名",
    }).getArray();
}

区分2のリスト内容はテーブルデータの区分1コードを検索条件として区分2マスタから取得します。新規の場合テーブルデータがないため、区分2のリストはカラになります。

fd区分2のソース
function(initFormData,dbData,initData,result){
    var fd区分1=dbData["区分1コード"];
    var ary=db.select("skeComm","freeSql",{
        sql:"select * from 区分2マスタ where 区分1コード=:fd区分1 order by 区分2コード",
        fd区分1:fd区分1,
    }).map({
        value:"区分2コード",
        option:"区分2名称",
    }).getArray();
    ary.unshift({
        value:"",
        option:"",
    });
    return ary;    
}

区分1が操作されたら、区分1の選択値を条件として、区分2マスタから配列を取得して、区分2コンボのリストに設定します。

fd区分1の入力枠操作
function(touchFormData){
    var fd区分1=touchFormData.fd区分1;
    var ary=db.select("skeComm","freeSql",{
        sql:"select * from 区分2マスタ where 区分1コード=:fd区分1 order by 区分2コード",
        fd区分1:fd区分1,
    }).map({
        value:"区分2コード",
        option:"区分2名称",
    }).getArray();
    ary.unshift({
        value:"",
        option:"",
    });
    return new Result()
    .runat("#TEST_inputDialog #fd区分2")
    .remove("option")
    .append("<option value={value}>{option}</option>")
    .withdata(ary);
    
}

効果

新規の場合、区分1コンボのリストは値があります。
image.png
区分1コンボを選択したら、区分2コンボのリストはそれに合わせて内容が設定されます。
image.png
保存後のデータを編集モードで開く場合、区分1区分2のリスト内容をと選択値は正しく設定されます。
image.png

まとめ

今回の記事のサンプルには、以下のアドオンを利用しました。

  • ソースのアドオン
  • 入力枠操作のアドオン
0
1
0

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
0
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?