- - PR -
ASP.NET Web ページにクライアント スクリプトを動的に追加する方法で
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-08-12 22:57
お世話になっております
RegisterOnSubmitStatementを使用して スクリプトを 埋め込んだのですが 埋め込んだスクリプトで alert は正常に動作されるのですが return confirm は 動作しないのですが return confirm を Onclick 時のスクリプトに埋め込む場合は 正常に動作します ASP.NET2.0 の場合、クライアントコールバックで対処ができますが ASP.NET1.0 の場合は POSTBACK する手前で 確認画面を表示する方法って ありませんでしょうか? すみません ご教授の程 よろしくお願いいたします | ||||||||
|
投稿日時: 2008-08-13 16:28
こんにちは。
確認させていただきたいのですが、『動作しない』というのは、confirmのダイアログ自体が表示されずにそのままPostされてしまう、という理解でよいでしょうか。 また、alertだと動くという点についても疑問がありまして、これは同じコントロールの同じイベントで発生したPostBackに対してでしょうか。それとも違うコントロール or 違うイベントに対して、でしょうか。 手元にASP.NET 1.0の環境が無いため、1.1で確認した動作になりますが、以下のように登録した場合、PostBackを実行するコントロールがButtonコントロールの既定の動作であれば、alertでもconfirmでも動作しました。
逆に、ASP.NET 1.1では、例えばAutoPostBackプロパティーをtrueにしたDropDownListで等によってPostBackが実行された場合、alertであってもConfirmであっても、動作しないと思います。 (これはブラウザのonsubmitの着火に関する仕様(?)が原因です。ちなみに、ASP.NET 2.0ではこの場合も動作するよう、ちょっとした小細工(というと語弊がありますが……)が施されています。) | ||||||||
|
投稿日時: 2008-08-14 19:49
返信をありがとうございます
お礼が遅れてしまって申し訳ありません
重ね重ね申し訳ないのですが 今、気がついてしまった 私の書き込みミスで・・・・ RegisterOnSubmitStatement ではなく RegisterStartupScript の間違いです RegisterOnSubmitStatement こちらでの動作は確認とれています あまりにも 目的を書き込んでなかったため ご迷惑をおかけしました やりたい事は OnClick イベントにて サーバーサイドの処理にて データを特定した後に 確認画面(confirm) を表示し 戻り値により コントロールのプロパティを 切り替えたいのですが・・・・ RegisterOnSubmitStatement だと サーバーサイドの処理と クライアントサイドの処理の 順番が 逆 になってしまうんです すみません 妙な書き込みだと思われたと 思います ごめんなさい | ||||||||
|
投稿日時: 2008-08-14 22:51
なるほど。やはり、何かつじつまが合わないな、と思いました(^^;
えっと、では、再度確認なのですが、実現したいことのイメージとしてはこんな感じでしょうか? (ちょっとうまく書けないのですが、CLがブラウザでの操作、SVがサーバサイド処理、という感じで) −−−−−−−−−−−−−−−−−−−−−−−− 1) [CL] Button.Click ↓ <POST> ↓ 2) [SV] データ取得、confirm表示させるスクリプトを書き出す ↓ <レスポンス> ↓ 3) [CL] confirm表示 ↓ <POST> ↓ 4) [SV] confirmの戻りで処理分岐(コントロールのプロパティ操作) ↓ ・・・・・ −−−−−−−−−−−−−−−−−−−−−−−− | ||||||||
|
投稿日時: 2008-08-15 18:16
まさしく その通りです すみません よろしくお願いします | ||||||||
|
投稿日時: 2008-08-17 19:36
であれば、とりあえず『confim後にPostBackするようなスクリプト』を書き出すだけで良いと思います(スクリプトの書き出しはRegisterStartupScriptでやって良いと思います)。
また、JavascriptからのPostBackのさせ方ですが、後にサーバサイドでどのイベントでPostBackされたかが楽に解るほうが良いのであれば、以下のような方法があります。 1) 画面に、Buttonコントロールを一つ配置。(ここでは、名前をButton1とします) 2) CSSにて、Button1の表示を消します。 3) RegisterStartupScriptで表示するスクリプトを以下のようにする。
4) あとは、Button1のonClickイベントハンドラ内で適切に処理。 以上でどうでしょうか。 |
1