はじめに
前回の記事の続きになります。今回は編集画面で削除ボタンがクリックされたらそのレコードを確認画面を表示させずに削除するという処理を実装していきます。処理自体は単純です。また、今回この処理を実現しようと思った理由は前回の記事同様に毎回確認ダイアログが表示されるのがいやだからです。
プロセス機能
標準の削除ボタンを削除
今回はレコードを削除するボタンを追加するわけですが、標準の削除ボタンがあると任意で追加した削除ボタンと見分けがつかなくなります。そのため、下記
サーバスクリプト
// 新規作成・編集画面のとき
if (context.Action === 'edit') {
elements.DisplayType('DeleteCommand', 3); // 削除
elements.DisplayType('OpenCopyDialogCommand', 3); // コピー
elements.DisplayType('EditOutgoingMail', 3); // メール
}
任意の削除ボタンを追加
まずは、プロセスの機能を使って、削除ボタンを追加しようと思います。標準の削除ボタンでは、確認ダイアログが表示されてしまいますので、プロセス機能を使って削除ボタンを追加します。ちなみに、このプロセス機能を使えば任意の処理を行うためのボタンを追加することができるため便利です。プロセスタブの新規作成から表示名を削除にし、OnClick欄に\$p.ex.<任意のメソッド名>();を入力します。そのあとに「\$p.execProcess($(this));」を入れると更新処理が走ります。今回は削除なので入力しません。
そのうえで下記のソースコードをクライアントスクリプトに入力します。
クライアントスクリプト
$p.ex.execDeleteRecord = function () {
try {
// レコードの削除処理
$p.apiDelete({
// 自身のレコードIDを指定
id: $p.id(),
done: function (data) {
// レコードが削除されてしまうとエラーが起きるため、一覧画面に遷移させる
window.location.href = '<該当レコードの一覧画面>'
}
});
} catch (ex) {
console.log(ex.stack)
}
}