- PR -

マスターページのマスタ側を子コンテンツより更新

1
投稿者投稿内容
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-12-19 13:10
お世話になります。


マスターページを利用したアプリでそのコンテンツページのGridViewのデータを更新するタイミングでマスターに表示しているコントロール(今回は、カレンダーの選択状態やセルに表示している文字)を再描画(更新)させたいのですが、アプリから行うにはどうしたらいいですか?

IE7のタブをクリックしたときのメニュ項目(最新の情報に更新)のようなことをしたいのですが、教えてください。お願いします。

ASP.NET C#
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-12-19 13:28
アプリから、というよりコンテンツページからマスターページの内容を設定したい、ということですよね。
コンテンツページ側からでもマスターページに含まれるオブジェクトを操作することは可能です。

http://msdn.microsoft.com/ja-jp/library/system.web.ui.page.master(VS.80).aspx
Masterプロパティから、その中のコントロールツリーをたどっていって必要なオブジェクトを操作すればよいと思います。
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-12-19 15:06
お世話になります。

> コンテンツページからマスターページの内容を設定したい
という意味ですが、Master.xxxxx などでの設定はできてるとおもいます。
がGridView は、更新されてもマスター側のカレンダーは、変わりません。

それで、Redirect("xxxx.Master");とかコンテンツページでないページをいったん表示して元に戻す(これは、実際画面の変化なし)などしたけど変化なしでした。前者は、リソースなしというエラーになった。

それでお聞きしました。コンテンツ側からマスタ内容や表示する関数など更新させるだけで新しい(再描画)画面に変わりますか?
教えてください。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-12-19 15:21
カレンダーの更新というのが、GridViewを更新したあとに同じURL(コンテンツページ)にアクセスすれば
変化しているものであればRedirect(コンテンツページ)で大丈夫なはずです。

そうでないなら、マスター側にカレンダーを更新するメソッド(またはカレンダーを返すプロパティ)を
用意しておいて、コンテンツから呼べばいいです。マスターのプロパティなどにアクセスする方法は
どっとねっとふぁんさんが張ったページからリンクしてあるところにかいてありますよね。
http://msdn.microsoft.com/ja-jp/library/xxwa0ff0(VS.80).aspx
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-19 15:34
質問内容がいまいちわかりません。
タイトルどおり「マスターページのマスタ側を子コンテンツより更新」
と言うことであれば
どっとねっとふぁんさんの回答がズバリではないかと思います。

「コンテンツを更新してもマスターが思った通り更新されない」
と言うことであれば
ポストバッグ時にマスター側をデバッグするなどして
なぜ思った通りに表示されないかを自分で確かめるしかないと思います。

> Master.xxxxx などでの設定はできてるとおもいます。
と言うことだからマスター側に
「マスター側のカレンダー」を正しく表示するロジックが書いてあるんですよね?


[ メッセージ編集済み 編集者: King 編集日時 2008-12-19 15:42 ]
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-12-19 17:17
お世話になります。

> ポストバッグ時にマスター側をデバッグするなどして
これをやってみてわかったことがあります。
初期化は、行われていて値が代入されているのですが、
Calendar1_DayRender() で描画するときにその部分が消えていました。
理由は、まだわかりません。もう少しデバッグして調べてみます。

的確なご指摘ありがとうございました。
1

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