2024/11/15更新:この現象はv4.2.39で修正されました。
対象
・Sheetモード
現象
「フィールド値変更時イベント(app.record.index.edit.change.<フィールドコード>)」でテーブルの値を更新する際に、テーブルにソートやフィルターを設定していると正しい行の値が更新されない場合があります。
回避方法
フィールド値変更時イベントではなく、「保存実行前イベント(app.record.index.edit.submit)」を使用する方法をご検討ください。
let changedRow = {}
// フィールド値変更時イベント
krewsheet.events.on('app.record.index.edit.change.文字列1', event => {
let recordNumber =event.record["レコード番号"].value;
if(changedRow[recordNumber]==undefined){
changedRow[recordNumber] = {};
}
changedRow[recordNumber][event.changes.row.id]=true;
return event;
});
krewsheet.events.on('app.record.index.edit.submit', event => {
console.log(event);
console.log(changedRow);
let allRecords = event.records;
if(allRecords){
for(let i=0;i<allRecords.length;i++){
let recordNumber = allRecords[i]['レコード番号'].value;
if(changedRow[recordNumber]){
const records = allRecords[i]['テーブル'].value;
for(let j=0;j<records.length;j++){
if(changedRow[recordNumber][ records[j].id]){
records[j].value['文字列2'].value = records[j].value['文字列1'].value;
}
}
}
}
}
changedRow={};
return event;
});
今後のアップデートで改善される予定です。