サブテーブルレコードの追加について

上記のようなテーブルフォームを作成しています。

処理内容として、チェックボックスがある場合に、「チェックしたデータの複写」ボタンを押すと、新しいテーブル行を追加しチェックしたデータをそのままコピーしたいとおもっています。

処理のイベントは’app.record.create.show’,'app.record.edit.show’になります。

record.record.mousitate.value.push(newRow);のPUSH後にデバックをしレコードの状態を確認すると以下のようになっておりPUSH自体には成功しているとおもっています。

returnの位置がおかしいのかもしれませんが、処理が終わっている状態で画面及びデータに反映されていない状態となっております。

後記

PUSHの後に、kintone.app.record.set(record);を実行することにより画面表示することはできました。

この場合に、app.record.create.change.テーブル名のイベントを発生させることはできないでしょうか?

 

 

ご教授願えれば幸いです。

以下デバックの結果

以下作成済みソース

var myJQuery = jQuery.noConflict(true);

(function($) {
“use strict”;

kintone.events.on([‘app.record.create.show’,‘app.record.edit.show’], function(event) {
var record = event.record;
initform_Buton(record)
return event;
});

function initform_Buton(record){
// 任意のスペースフィールドにボタンを設置
button_set(‘M_button2’,‘チェックしたデータの複写’);
myJQuery(‘#M_button2’).on(‘click’, function() {Copy_M(kintone.app.record.get())});
return;
}

function Copy_M(record){
var check = 0
var copymoto = 0
for (var count = 0 ; count < record.record.mousitate.value.length ; count++){
if (record.record.mousitate.value[count].value.M選択.value.length == 1){
copymoto = count;
check = ++check;
}
}
switch (check) {
case 0:
window.alert(‘コピーする元が選択されていません。’);
break;
case 1:
var copydata = {
“M種別” : record.record.mousitate.value[copymoto].value.M種別.value,
“M郵便” : record.record.mousitate.value[copymoto].value.M郵便.value,
“M住所” : record.record.mousitate.value[copymoto].value.M住所.value,
“M氏名” : record.record.mousitate.value[copymoto].value.M氏名.value,
“M携帯” : record.record.mousitate.value[copymoto].value.M携帯.value,
“M電話” : record.record.mousitate.value[copymoto].value.M電話.value,
“MFAX” : record.record.mousitate.value[copymoto].value.MFAX.value
}
//新しい行の追加
var newRow ={
value: {
‘M選択’: {
type: ‘CHECK_BOX’,
value: NULL
},
‘M郵便’: {
type: ‘SINGLE_LINE_TEXT’,
value: ‘郵便番号’
},
‘M郵便’: {
type: ‘SINGLE_LINE_TEXT’,
value: ‘郵便番号’
},
‘M住所’: {
type: ‘SINGLE_LINE_TEXT’,
value: ‘住所’
},
‘M氏名’: {
type: ‘SINGLE_LINE_TEXT’,
value: ‘氏名’
},
‘M携帯’: {
type: ‘SINGLE_LINE_TEXT’,
value: ‘携帯’
},
‘M電話’: {
type: ‘SINGLE_LINE_TEXT’,
value: ‘電話’
},
‘MFAX’: {
type: ‘SINGLE_LINE_TEXT’,
value: ‘FAX’
}
}
};
record.record.mousitate.value.push(newRow);

return event;
default:
window.alert(‘コピーする元が複数チェックされています。’);
}
}

 

Kintone初心者研修中さん

JavaScriptAPIのイベント発火は画面上で操作を行った場合のみになります。

そのため、kintone.app.record.setで値を更新した場合、発火しません。

kintone.app.record.set時にイベント内と同じ処理を行いたい場合、必要な処理を関数化し、

kintone.app.record.setの処理後に呼び出してあげる形になると思います。