2
0

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 1 year has passed since last update.

kintoneのサブテーブルの項目内容の固定化(編集無効化)

Posted at

はじめに

kintoneのサブテーブルはリスト状の入力項目を簡単に実現できて便利です。サブテーブルの入力項目を分担する場合など、部分的に項目値を固定したい場合があります。そこで、今回は列単位で項目内容の固定化(編集無効化)を行うサンプルコードを作成します。

サンプルアプリ

"明細固定"項目の変更で明細テーブルの列の項目内容の固定化、固定化解除を行うことを想定しています。アプリのフィールドのアクセス権で"明細固定"項目の編集権を特定ユーザのみに付与することで、
付与されたユーザ以外は明細テーブルを変更できなくすることができます。明細テーブルの内容の承認単量ユーザにのみ、"明細固定"項目の編集権を与えておけば、簡易的ですが承認システムになります。

image.png

サブテーブルの項目内容の固定化を行うタイミング(イベント)について

サブテーブルの項目内容の固定化を行うためには、サブテーブルの行内の項目が実際に生成されていなければなりません。何が言いたいかというと、レコードの新規作成画面でサブテーブルが初期状態(空欄の行が1行表示されているだけ)の場合、サブテーブル内のレコードデータが存在しないため、項目の無効化ができません。このため、基本的にレコード編集画面のshowイベントか、レコード編集画面で項目値のchangeイベントが発生した場合タイミングでレコード項目の固定化処理を行う形になります。

全体のソースはこんな感じです。

(function() {
    "use strict";
    var events = [
        'app.record.edit.change.明細固定'
    ];   
    kintone.events.on(events, function(event) {
        // イベントからレコード取得
        var record = event.record
        // サブテーブル項目のdisabledプロパティへの設定値を格納
        var disabledflg;

        //明細固定のモード判定
        if(record['明細固定'].value == '固定'){
            disabledflg = true;
        }else{
            disabledflg = false;
        }

        //サブテーブル項目(列)の編集無効化設定
        record['明細テーブル'].value.forEach((r) => {
            r.value.品目コード.disabled = disabledflg;
            r.value.品名.disabled = disabledflg ;
        });
        return event;
    });
})(); 

サンプルアプリでは、"明細固定"項目の変更で、固定と固定解除を切替える想定のため、'app.record.edit.change.明細固定'イベントを対象として、サブテーブル項目内容の固定化(編集無効化)を行います。
サブテーブル項目のvalueは行の配列となっており、項目の固定化(無効化)プロパティは項目単位で行う必要があります。今回のサンプルではforEachで行を取得し、行の項目(列)単位でdisabledプロパティ値の設定を行っています。列単位での固定化の例として、数量列は固定されないようにしています。(数量のみ変えられる想定)

実際にレコード編集画面で確認すると以下のように表示が切り替わります。
'明細固定'項目を「固定」に変更した場合
image.png
'明細固定'項目を「固定解除」に変更した場合
image.png

おわりに

今回の例では、サブテーブルの列単位での項目内容の固定化を行いましたが、項目単位でdisabledプロパティが存在するため、行単位やテーブル内の特定の項目だけ固定化する等の応用が可能です。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?