- - PR -
非同期通信で取得した内容を、画面に表示する方法
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-03-11 12:21
はじめて利用させて頂きます
ASP.NET3.5で開発しています 画面側のドロップダウンリストをupdatepanelタグで囲んで非同期通信をしています そのドロップダウンリストの内容を変える度にチェンジイベントを走らせ 〜aspx.vbの処理でDBから取ってきた値を、金額欄にセットして画面に表示させることを 考えています 画面構成は、master.pageを使っています その関係で、金額欄をupdatepanelタグで囲むことは出来ません 実装の方法としては、 〜aspx.vbの処理で取得した金額を、javascriptの変数で受けて その変数を金額欄にセットするという作りにしようと考えています 実コードの書き方が全く分からず、困惑しています よろしくご教授ください お願いいたします | ||||
|
投稿日時: 2009-03-11 14:25
金額欄がマスターページ側にあるからupdatepanelで囲めないってことでしょうか。
この機能を使えばできそうです。 http://www.atmarkit.co.jp/fdotnet/ajaxlib/ajaxlib02/ajaxlib02_04.html 値の受け渡しは、この方法を使ってもいいですが、私だったらhidden経由かなにかで やっちゃいます(ドロップダウンリストのvalueでもいい) http://www.atmarkit.co.jp/fdotnet/ajaxlib/ajaxlib02/ajaxlib02_05.html | ||||
|
投稿日時: 2009-03-11 20:18
べる様
お世話かけます mastepage.masterの中 function pageLoad() { var mng = Sys.WebForms.PageRequestManager.getInstance(); // 非同期ポストバックの完了時に呼び出される // イベント・ハンドラを定義 mng.add_endRequest( function(sender, args) { var aaa,bbb,ccc //合計金額の取得 aaa = document.getElementsById("hdnaaa").Value; bbb = document.getElementById("hdnPbbb").Value; ccc = document.getElementById("hdnccc").Value; 〜aspxの中 <!-- 追加 --> <input type="hidden" runat="server" id="hdnaaa" value="" /> <input type="hidden" runat="server" id="hdnbbb" value="" /> <input type="hidden" runat="server" id="hdnccc" value="" /> 〜aspx.vbの中 'hidden項目設定 Me.hdnaaa.Value = Server.aaa '金額1 Me.hdnbbb.Value = Server.bbb '金額2 Me.hdnccc.Value = Server.ccc '金額3 この書き方だと、javascriptで値を取る事が出来ません 非同期通信が関係しているのでしょうか よろしくお願いします | ||||
|
投稿日時: 2009-03-12 01:24
どうせマスターページを編集するならやはりマスターページ側でUpdatePanel使ったらいいんじゃないですか?
aspx側からマスターページへはこの方法でアクセスできます。 http://www.atmarkit.co.jp/fdotnet/dotnettips/469aspmasterpage2/aspmasterpage2.html endRequestを使うのであれば、、
これらをaspx側に書いて getElementById('<%= hdnccc.ClientID %>') などとすれば取れるでしょう。で、 function pageLoad() { の中に入れる必要は無いと思います。これは初回も非同期完了時も呼ばれますから。 | ||||
|
投稿日時: 2009-03-12 03:11
べる様
たびたびお世話かけます HTMLソースを確認し、追加されたコードを追加しましたが だめでした というより、マスターページを使っている関係で、頭にコンテンツ名がついてしまい 同じにすることが出来ません よろしくお願いします | ||||
|
投稿日時: 2009-03-12 03:47
はい、そうですよね。
ですからマスターページでなくaspx側に<%= hdnccc.ClientID %>のように書いて、 自動生成されるIDをjavascript側で参照できるようにするか、 aspx側からマスターページのコントロールを取得できるようにしておいて 非同期ポストバックのときにVB側で操作するか、の2とおりの提案をしました。 | ||||
|
投稿日時: 2009-03-12 04:30
ベル様
たびたびお世話をおかけしております すっかり、はまってしまいました aspx側にhidden項目を <input type="hidden" runat="server" id="hdnaaa" value="" /> と書いて javascriptを hogehoge = document.getElementById('<%= hdnaaa.cliant %>') のように自動生成されるIDを書くと 怒られてしまいます 何か根本的に間違っているのでしょうか よろしくお願いします | ||||
|
投稿日時: 2009-03-12 07:04
UpdatePanelを使わないで
Ajax経由でWebサービスを呼び出したらどうですか? Webサービス経由で取得した情報をDropDownListに表示するとか。 PageMethodを使えば簡単に実装できると思うのですが・・・ _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 [ メッセージ編集済み 編集者: Access 編集日時 2009-03-12 07:05 ] |
1|2|3
次のページへ»