ブログ

2024/12/18
【プリザンター】 第278回)一覧画面のボタンでサーバスクリプトを発火させる

サーバスクリプトの一覧画面での発火

こんにちは、CCS田中です。

以前の投稿「第255回)ボタンでサーバスクリプトを発火させる」で、ボタンを設置してサーバスクリプトを実行する方法を紹介しました。

ただ、この方法ですとプロセス機能を使用しているため、新規作成画面か編集画面でしかボタンを設置できず、一覧画面からサーバスクリプトが発火できません。単に一覧画面にボタンを設置することはできますし、そのボタンのIDを拾うことは可能ですが、ちょっと工夫が必要なため備忘録を兼ねて紹介します。

実は、私がこの件で私が悩んでいたところ、プリザンターのインテグレートパートナーのみが出席できる勉強会が月1度あり、そこでインプリムの内田さんから直接教えていただきました。
(インプリム内田社長、ありがとうございました)

詳細は以下で説明します。

スクリプト・サーバスクリプトの説明

今回サンプルとして、何でもよいので記録テーブルを作成し、そこにスクリプトでボタンを設置、サーバスクリプトでそのボタンクリック後の処理をさせます。
サンプルのためサーバスクリプトではログ出力のみ行います。

まずは、以下のスクリプトを追加します。
出力先は、「一覧」のみを選択してください。

<スクリプト>


$p.events.on_grid_load = function () {
$("#MainCommands").append(
$('<button id="button-exe" class="button button-icon button-positive ui-button ui-corner-all ui-widget applied" data-action="GridRows" data-method="post" onclick="$p.send($(this));">')
.html('<span class="ui-icon ui-icon-play"></span>実行')
);
};



上記は、一覧画面を表示したときに実行される「$p.events.on_grid_load」を使って、MainCommands領域にボタンを追加しています。
「onclick="$p.send($(this))」とすることで、ポストバックさせています。
「.html('<span class="ui-icon ui-icon-play"></span>実行'」では、UIアイコンを追加しています。

次に、上記のボタンをクリックしたときのサーバスクリプトを作成します。
条件は、「画面表示の前」としてください。

<サーバスクリプト>


try {
// 実行ボタンが押された時の処理
if (context.ControlId === 'button-exe') {
context.Log ('ボタンが押されました。')
}else{
// アラート出力
context.Error ('エラー')
}
} catch (ex) {
context.Log(ex.stack);
}



一覧画面を表示すると、一覧画面の下に「実行」ボタンが表示されます。


「実行」ボタンをクリックすると、コンソールに「ボタンが押されました。」と表示されます。
※コンソールは、F12キーを押下するなどして表示させてください。

まとめ

いかがでしたか?

スクリプトで処理をさせると、画面リフレッシュによりスクリプトが中断されてしまったり、処理が遅かったりする場合がありますが、サーバスクリプトで処理することでそのような心配がなくなります。ただしサーバ側で処理されるためサーバに負荷がかかりますし、エラー時にサーバ全体に影響も出ることもあるため、慎重に使用してください。

弊社ではプリザンターをご使用中、または、これからご使用になられる方向けに、運用ノウハウ集、プリザンター逆引き辞典、スタイル・スクリプトサンプル集の販売を行っております。
また、 プリザンターからのExcel帳票出力・PDF帳票出力の支援パック販売 も行っております。
プリザンター導入の支援や、スクリプト開発などの支援も行っておりますので、まずは気軽にご相談ください。
※ご相談の内容によっては有料となる場合がございます。予めご了承ください。
☆☆☆
ブログ内容への質問や追加説明をご希望の方は【 問い合わせフォーム 】からお気軽にお問い合わせください
☆☆☆

PAGE TOP