Implem / Implem.Pleasanter

Pleasanter is a no-code/low-code development platform that runs on .NET. You can quickly create business applications with simple operations.
https://pleasanter.org
GNU Affero General Public License v3.0
511 stars 81 forks source link

サーバスクリプトの AddChoiceHash で選択肢を設定すると同時に値も設定した場合、更新時に設定した値が無視される #527

Open kenichi-fk opened 3 months ago

kenichi-fk commented 3 months ago

1.サーバスクリプト 「画面表示前」でAddChoiceHashによる選択肢設定、その際に選択肢の値を設定。

例) [選択肢] ※動的に設定 2024/01 2024/02 2024/03

[値] ※チェック済みとする 2024/03 model.ClassD = JSON.stringify('2024/03')

2.クライアント側でレコードを開くと、選択肢は上記の通りになり、値2024/03 がチェック済みとなっている。

3.レコードをそのまま更新すると、チェック済みとなっていた選択肢の値はデータベースに反映されない。

ちなみに、以下のように、クライアントからのデータ送信前に $p.set で改めて選択肢の値を設定させると、データベースに反映されます。 例)

$p.events.before_send = function () {
    $p.set($p.getControl('ClassD'), JSON.stringify($p.getControl('ClassD').val()))
}
pierre3 commented 3 months ago

Issueありがとうございます。 確認いたしますので今しばらくお待ちいただけますでしょうか。

nagamune-implem commented 1 month ago

既にあるレコードの更新時に サーバスクリプトで「条件:画面表示の前」で model.ClassA = '2024/03'; を行った場合に、ClassAに'2024/03'がDBに格納されないのは現状の仕様となっております。 ※)新規作成時にはDBに'2024/03'が格納されます。

DBを更新したい場合は、 添付いただいた$p.setのコードを実行して頂くか サーバスクリプトで「条件:更新前」で model.ClassA = '2024/03'; を行っていただく必要がございます。

また、サーバスクリプトで条件「画面表示の前」で model.ClassA = '2024/03'; を行うと、ClassAに何が入っていても、画面表示は'2024/03'となってしまいDBの内容が画面に反映されていない状態となります。

もし、解決したい問題の認識に食い違いがある場合は、お手数ですがコメントを頂ければと思います。

nagamune-implem commented 1 month ago

提供した情報に不足がございました。

開発者向け機能:サーバスクリプト:context.AddResponse | Pleasanter https://www.pleasanter.org/manual/server-script-context-add-response

上記のサーバスクリプトのメソッドを用いれば、サーバスクリプトから「画面を開いた段階でユーザがフォームを入力した状態」を作り出す機能がございます。