テーブルのインデックスが更新されていないように感じます。そのため、古い行インデックスの下にある行を検索すると、そこには何もないと見なされます。
これを試して:
table.addEventListener('delete', function(e) {
table.setData(table.data);
if(some condition){
db.execute("DELETE FROM tbltest WHERE rowid ='" + e.source.rowid + "'");
} else {
alert('Deletion is not possible');
table.insertRowBefore(e.index, e.row);
table.setData(table.data);
}
}
setData を実行した後に e.row が失われないかどうかはわかりませんが。もう1つの注意点は、最後の行を削除している場合、これは機能しないということです. したがって、行のインデックスを確認し、行の長さと比較して、それが大きい場合は行を追加します。したがって、コードは次のようになります
table.addEventListener('delete', function(e) {
table.setData(table.data);
if(some condition){
db.execute("DELETE FROM tbltest WHERE rowid ='" + e.source.rowid + "'");
} else {
// below will only work if you have 1 or no explicit sections in the table if you have more, you'll need to iterate through them
if (e.index >= table.data[0].rows.length) {
table.appendRow(e.row);
} else {
table.insertRowBefore(e.index, e.row);
}
table.setData(table.data);
}
私はこれをテストしていませんが、うまくいかない場合は、少なくとも正しい軌道に乗ることを願っています:)