- PR -

サブ画面からのsubmitによるValidator動作について

1
投稿者投稿内容
ひっぴ
会議室デビュー日: 2006/10/10
投稿数: 3
投稿日時: 2006-10-10 18:18
当方、VB.NET による ASP.NET 1.1 アプリケーションを開発しています。

RequireFieldValidator コントロールなどを貼り付けたメイン画面から、JavaScript の window.open() でサブ画面を表示させています。
そのサブ画面では、画面に貼り付けたボタンをクリックすると、Session 変数に値をセットした後、JavaScript にて、親のメイン画面に submit() して、画面を閉じます。
メイン画面は、submit() されると、画面を再描画して Session 変数にセットされた値を画面上に表示させます。

このようなアプリケーションを作成中です。

ここで質問なのですが、サブ画面から submit() されてメイン画面を表示し終わった時に、メイン画面上に配置した Validator のチェックが効いてしまい、エラーメッセージが表示されてしまいます。
サブ画面から親画面への submit() で、Validator のチェックを回避させることは出来ますでしょうか?

助言など頂けますと助かります。よろしくお願いいたします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-10-11 10:55
例えば再描画用のボタンを画面に追加し、
CausesValidation プロパティを false に設定してみてはどうでしょうか。
ひっぴ
会議室デビュー日: 2006/10/10
投稿数: 3
投稿日時: 2006-10-11 11:18
かるあ様、ありがとうございます。
ここ数日ずっと悩んでいるのですが、解決の糸口も掴めず・・・(T-T)

出来れば、再描画専用のボタンを設置せずに、実現したいと思っています。

サブ画面から、メイン画面を再描画されるために、サブ画面上にコーディングした JavaScript で、

  window.opener.document.Form1.submit();

と発行すると、親画面の方が再描画するのですが、再描画後の画面に Validator が効いた(エラーメッセージが表示された)状態になってしまっています。

確かに、生成された HTML ソースコードを見てみると、form タグに

  onsubmit="if (!ValidatorOnSubmit()) return false;"

って生成されているので、エラーが表示されてしまうのは仕方ないと思うのですが・・・。これを、CausesValidation プロパティを false にしたときと同じように、サブ画面からの submit でも生成しないようにすることって出来るのでしょうか?

 そもそも、サブ画面から親画面を再描画させる方法として、submit を発行する事自体が不適なのでしょうか?

 もしご存じでしたら、ご教授ください。よろしくおねがいいたします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-10-11 11:57
引用:

ひっぴさんの書き込み (2006-10-11 11:18) より:

出来れば、再描画専用のボタンを設置せずに、実現したいと思っています。


すみません、なんとかする方法はあるのかも知れませんが思いつきません。

引用:

 そもそも、サブ画面から親画面を再描画させる方法として、submit を発行する事自体が不適なのでしょうか?


サブ画面側 でデータベースを更新してその値を元に再描画している?
それなら サブ画面 の formload 時に 親画面 の情報も一緒に持ってきて
サブ画面 から 親画面に値を書き込んであげればいけそうですが。
項目が多いと大変ですね。。。
_________________
かるあ のメモスニペット
ひっぴ
会議室デビュー日: 2006/10/10
投稿数: 3
投稿日時: 2006-10-11 14:29
かるあ様

たびたび、助言ありがとうございました。

あれからも submit の前に JavaScript で、
  Page_ValidationActive = false;
としてみたり、いろいろ試行錯誤してみているのですが、どれもうまくいかず、完全に手詰まりになってしまいました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-10-11 22:19
 親画面内の関数を呼び出して、関数内で submit。
その時、validator を off にして回る。

 または。post するから validator が走るので、get すればいい。

引用:

メイン画面を表示し終わった時に、メイン画面上に配置した Validator のチェックが効いてしまい、エラーメッセージが表示されてしまいます。


 validator を配置すると、form の onsubmit にクライアント スクリプトを動作させるようになって、まずクライアント側でチェック。このとき、チェックに引っかかれば、submit はされません。
 クライアント側が通ると submit されて、サーバ側でもう一度チェック ルーチンが呼ばれる。そして、クライアントに結果が返される。

_________________
1

スキルアップ/キャリアアップ(JOB@IT)