- PR -

JavaScript呼出し後にUpdatePanelを更新したい。

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2007-11-29 10:16
環境:WInXP VS2005 VB

UpdatePanel内に配置したボタンコントロールで
JavaScriptのfunction呼出し後にUpdatePanelを更新したいのですが、
現状ではUpdatePanelの更新後にJavaScriptのfunctionが実行されます。
(非同期なので同時に実行されるのですよね?)

単純に
ボタンコントロールはUpdatePanelの更新トリガーにせず
ボタンコントロール押下時に呼び出されるJavaScriptのfunctionで
UpdatePanelを更新させればいいのかと考えたのですが
具体的なコードがわかりません。


操作手順は以下の通りです。
・UpdatePanelにテキストボックスとボタンコントロールを配置。
・親ページよりボタン押下でポップアップ画面を開く。
・ポップアップ画面で選択した項目を親ページのテキストボックスに表示。
・テキストボックスのTextChangedイベントで選択項目の詳細情報を表示。

よろしくお願いいたします。
chack
常連さん
会議室デビュー日: 2002/11/18
投稿数: 48
お住まい・勤務地: 埼玉県
投稿日時: 2007-11-29 22:14
単純に、
1)ボタンコントロールを UpdatePanel の外に配置して、トリガーとしない。
2)UpdatePanel 内に配置したテキストボックスの AutoPostBack を True にして
TextChanged イベントハンドラを設定する。
で、出来ませんでしょうか?
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-11-30 06:13
JavaScriptからUpdatePanelを更新するには、以下のコードで可能かと・・・

コード:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('UpdatePanel1', '');



ライブデモ:
http://www.ajax-asp.dev-asp.net/Samples/070805VB-1.aspx

_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-11-30 08:19
引用:

Accessさんの書き込み (2007-11-30 06:13) より:
JavaScriptからUpdatePanelを更新するには、以下のコードで可能かと・・・

コード:

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('UpdatePanel1', '');




先頭が アンダーバー"_" から始まるメソッドは Private メソッドなので、
あまり使用しない方が。。。利用するとしても、将来的に変更が加わることを理解して使うべきです。

Sys.WebForms.PageRequestManager Class
http://www.asp.net/ajax/documentation/live/clientreference/Sys.WebForms/PageRequestManagerClass/default.aspx
引用:

note
This class contains private members that support the client-script infrastructure and are not intended to be used directly from your code. Names of private members begin with an underscore ( _ ).


_________________
かるあ のメモ
http://karua.at.webry.info/

[ メッセージ編集済み 編集者: かるあ 編集日時 2007-11-30 08:22 ]
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2007-11-30 14:10
chackさま
返答ありがとうございます。
試してみましたがページ全体がPOSTBACKされてしまいます。

Accessさま
教えていただいたコードで試したところ、UpdatePanelのみ更新することができました。

かるあさま
_doPostBackを使用するかどうか検討したいと思います。

Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-12-02 08:24
>先頭が アンダーバー"_" から始まるメソッドは Private メソッドなので、
>あまり使用しない方が。。。利用するとしても、将来的に変更が加わることを理解して>使うべきです。

そうですね。あまり好ましくないですね。
_doPostBackを利用しないで同等の機能を実装する方法ありましたら
教えてください。

_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-12-02 18:17
引用:

Accessさんの書き込み (2007-12-02 08:24) より:
_doPostBackを利用しないで同等の機能を実装する方法ありましたら
教えてください。


コードで正攻法をとるやり方は僕もわかりません。
リファレンスを見た限りだとなさそうな感じですよね。

質問者さんが Private と知らないまま使うのはちょっと危ないかなぁ〜
と思ったので補足しましたが、僕も言葉が足りなかった用ですね。
機嫌を損ねたようでしたら申し訳ありませんでした。

メソッドが公開されていないということは、Microsoft としてはスクリプトから UpdatePanel をじかに Update するのは推奨されていないってことなのかな?
なんでなんだろう。

_________________
かるあ のメモスニペット
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-12-03 07:15
>質問者さんが Private と知らないまま使うのはちょっと危ないかなぁ〜
>と思ったので補足しましたが、僕も言葉が足りなかった用ですね。
>機嫌を損ねたようでしたら申し訳ありませんでした。
機嫌を損ねるどころか指摘していただいて非常に感謝しております。
ありがとうございます。

かるあさんの回答はすごく参考になります。
今後ともよろしくお願いします。

最近、ASP.NETなどの技術情報を調べていて痛感するのですがインターネットの情報は80%が英語で提供されているようですから、英語を母語にするくらいの気力がないとインドなどの技術者と対抗できませよね。

私も含めて英語を日本語のように使いこなしましょう・・・

これからは、文章よりもビデオによる技術情報の提供が多くなるでしょうから
文章を読む力も大事ですが聴く力が重要になってくると思ってます。

Learn ASP.NETのビデオシリーズお勧めです。
http://www.asp.net/learn/

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