サブテーブルの特定行を変更不可にしたいです

お世話になります。

あるサブテーブルに複数行データがあり、その中の項目「支払状況」が「支払済」の行については変更、削除ができないようにしたいのですが、可能でしょうか?

s-kan さん

こんにちは。ひよこです。

一部DOM操作が必要ですが、できます。

・変更できないようにする
テーブルのフィールドに対して diabled を設定すると入力不可にできます

・削除できないようにする
「ー」ボタンの要素をDOM操作で非活性にします。
これは kintone 公式のAPIで操作しているわけではないので、バージョンアップなどで動かなくなる可能性があることを留意してください。

こんな感じでいかがでしょうか?

編集画面のみで動作します。
また、テーブルに新しく行を追加したときの追加した行については動作しないので、必要であれば書き換えてください。

(function() {
'use strict';
kintone.events.on('app.record.edit.show', function(event) {
var table = event.record.Table.value;

table.forEach(function(row){
var fields = row.value;
var paymentStatus = row.value.支払状況;

if(paymentStatus.value === '支払済') {
// フィールドを入力不可にする
Object.keys(fields).forEach(function (fieldCode) {
fields[fieldCode].disabled = true;
});
// [-]ボタンを非活性にする
[].forEach.call(document.getElementsByClassName('remove-row-image-gaia'), function(button){
button.disabled = true;
});
}
});
return event;
});
})();

削除ボタンがすべて非活性になってしまったので、いろいろ試行錯誤しながらこのようなコードになりました。どうもありがとうございました。

     kintone.events.on(‘app.record.edit.show’, function(event) {

         var table = event.record.Table.value;

         if(table.length>0){
             for(var i=0; i<table.length; i++){
                 var fields = table[i].value;
                 if(fields.支払状況.value==‘支払済’){
                     // フィールドを入力不可にする
                     Object.keys(fields).forEach(function (fieldCode) {
                         fields[fieldCode].disabled = true;
                     });

                     $(‘.remove-row-image-gaia’).eq(i).hide(); 

                 }
             }
         }
         return;
     });

ありがとうございました。

s-kan さん

あ、そうですね。
これだと確かに削除ボタン全部非活性になっちゃいますね。ごめんなさい。
非活性は行のDOM取得して、がんばって解析していけばできなくはなそうですが、結構大変そうです…。
でもちょっとは参考になれてよかったです!