- - PR -
GridView の ItemField内のボタンに Postback後JavaScriptにてWindow.open したいのですが・・・
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-02-26 10:07
いつもお世話になっております
GridViewのItemField内のボタンで Window.Openにて コード参照画面を表示させてます ここまでは、RowDataBoundにてAttributes["onclick"]にて動作実現します スクリプト実行する前に、サーバーサイドでの処理が必要なのですが 一旦、onclick="Btn_Click" とし サーバーサイドにてBtn_Clickのイベントを 起こしました RowCommand にて サーバーサイドの処理を行い (選択行の情報を セッションに編集する等の処理) Attributes["onclick"]にて Window.Open を 追加してみましたが 当然、Window.Open 出来るのが 次のクリック時になります (1タイミングずれます) PostBack後に JavaScript を起動するには (ほかの画面で、「window.open」以外のJavaScriptも起動させたい) RegisterStartupScriptも使ってみたのですが Onclick に Javascript を充てるタイミングを どこでやるのかが、よく解らないです すみません ご教授の程 よろしくお願いいたします | ||||
|
投稿日時: 2008-02-26 10:54
実現したい処理の流れとしては、↓のようであってますかね。
ボタン押下→Sessionにデータ格納→画面Open→開いたページにてSession参照 そのまま質問に答えるとすれば RowCommandの最後にClientScript.RegisterStartupScriptにて ボタン押下時のスクリプトを吐き出せば良いはずです。 (が、この場合ブラウザの更新がなされたときなどの対処が必要になるかと思います) ただ、、、上記では「実現したい事」と「実現できる事」に差異があります。 (その為、余計な対策・処理が必要になってきてしまいます) ですので、、、 >スクリプト実行する前に、サーバーサイドでの処理が必要 このような場合、RowCommandを使用せずに ICallbackEventHandler を実装し サーバーコールバック機能を使用する方法が最適かと思います。 ボタン押下→ServerCallback→Sessionにデータ格納→ Callback結果受信→画面Open→開いたページにてSession参照 コールバック機能の実装方法などはWeb上にかなりの数のサンプルが有ると思います。 もし判らないようであれば、再度質問していただければと思います。 [修正] インターフェース名を正しい名前に修正 ICallback→ICallbackEventHandler [ メッセージ編集済み 編集者: くまっち 編集日時 2008-02-26 11:20 ] | ||||
|
投稿日時: 2008-02-26 11:05
コールバック機能・・・・うーークライントコールバックまでは 調べて 「逆だわ」と思ってたとこでした クライアントがあればサーバーもあったんですねぇ ありがとうございます 調べてみます また よろしくお願いいたします | ||||
|
投稿日時: 2008-02-26 11:35
総称として、クライアント・コールバックが正しいですね。
その中のサーバーコールバックメソッドにてSessionへデータ保存です。 >「逆だわ」と思ってたとこでした コールバック機能は双方向にやり取り可能です。 Client(Script) → Server(Code) → Client(Script) という流れで、コードが実行され値の受け渡し等行えます。 内部的にはXmlHttpRequestによるバックグラウンド通信ですね。 | ||||
|
投稿日時: 2008-02-26 12:17
う・う・うー すみません www.microsoft.com/japan/msdn/asp.net/tips/ClientCallback3/ を読んでますが 頭がぐにゅぐにゅになります サーバーコールバックだと サーバーがクライアントになる なんて マイクロソフトの注意も読んだ上で 迷子になります なんか おすすめの本なり ページ等 ありますか? 応用力の無さに(涙) | ||||
|
投稿日時: 2008-02-26 12:35
MSDNのサンプルですが、、、
http://msdn2.microsoft.com/ja-jp/library/ms178208(VS.80).aspx こちらのほうが、余計なコードが無く判りやすいかと思います。 | ||||
|
投稿日時: 2008-02-26 13:58
blogs.sqlpassj.org/mitsugi/archive/2006/01/17/15833.aspx このページで動きの確認が取れました やっと、流れがつかめました ありがとう ございました | ||||
|
投稿日時: 2008-02-26 16:17
度々すみません
前記のHPより作成したものは動作するのですが PGに組み込むと 「インターフェイス メンバ 'System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent(string)' を実装しません。」 というビルドエラーが出ます RaiseCallbackEvent と GetCallbackEvent の2つともです 2つに何が違うかというと 動作しない方は マスタページをしようしているため ReceiveServerData と onclick 時の スクリプトを JSファイルに置いています (同一プロジェクト内に作成していますので 環境が異なるわけでは ないと思うのですが・・・) マスターページの使用時は使えないのでしょうか? すみません よろしくお願いいたします |