タイトル一覧   関連タグ: Web C#
タグ:Web C# タイトル:モーダル画面について。
1
1:  お名前:初心者 2006/05/15 14:19:40

いつも楽しく拝見しています。

データグリッドのある列をボタンにし、
ボタンを押されたときに、モーダルで画面を開くのですが、
モーダル画面で開く時の第二引数(子画面ではwindow.dialogArguments)にあたるところに、
データグリッドのある値を入れました。

子画面のページロード(CS上のページロード)で、その値を使用して、画面へ反映させたいのですが、
ページロードでどのように「window.dialogArguments」を取得するのでしょうか。

また、モーダル画面への値の受け渡しについて、他のよい方法があるのであればご教授お願いいたします。

初歩的な質問ですみません。

環境
OS:Windows2000
開発:VS2003
言語:asp.net framework1.1

2:  お名前:初心者 2006/05/22 17:13:57

モーダルではなく、新しくWindowを開く処理を行うようにいたしました。
 ・・・モーダル画面の場合、更新がかかった場合にレイアウトがずれるため。

また、子画面へのデータの受け渡しは、
Request.QueryStringに値をつめるようにいたしました。
 ・・・javascriptで画面を開いているため、ボタンが押されたタイミングでSessionに値を格納できないため。

問題点
子画面のプロパティーを見ると、アドレスがわかってしまいます。
ex)
アドレス「http://localhost/Test/TestKo.aspx?date=20060501&cd=99999&status=1」
このアドレスを隠すことはできないのでしょうか?
自分で、このアドレスをIEのアドレス等に書き込み画面移動を行うと、そのまま画面が表示されてしまいます。直接アドレス入力の場合に表示したくありません。
なにかよい方法があればご指導お願いいたします。


3:  お名前:中 博俊 2006/05/22 22:02:11

できません。
4:  お名前:初心者 2006/05/23 14:02:09

ご解答ありがとうございます。


モーダル画面を使用しないで、モーダル画面のような動き(フォーカスが子画面から抜けない)をすることはできないのでしょうか。

<body onblur="window.focus">

としたとき、子画面を捕まえることはできるのですが、
フォーム内の入力項目にすらフォーカスを当てることができません。

なにかよい方法はないでしょうか。

または、モーダル画面で更新がかかったときにレイアウトが変更されない方法はないでしょうか。

よろしくお願いいたします。

5:  お名前:Jitta 2006/05/23 22:28:20

 アドレス バーを表示せずに、ウインドウを開くことは、IE6 以前であれば出来ます。しかし、「フィッシング サイト」対策などで、今後はアドレス バーを表示しないようにすることは出来なくなるでしょう。実際、IE7 では、必ず表示されます。しかし、そのようにして表示したウインドウでは、ユーザがアドレスを入力できません(過去の入力を選択することは出来る)。

 JavaScript で画面を開いているということですが、XP SP2 などで、ポップ アップ ブロッカーを入れて警告が出ないことを確認していますか?ポップ アップ ブロッカーも、IE7 では標準の機能になります。


 さて、アドレスを隠すことは出来ませんが、クエリを隠すことは出来ます。GET 要求の時(IsPostback が false)、クエリがあるかないか調べ、ある時はクエリをセッション変数にしまい、クエリのない自分自身にリダイレクトします。XP SP2 & IE7β1 で確認済みです。
 画面の遷移をコントロールしたいということであれば、セッション ID を hidden な input にしまうという方法が、高木先生に推奨されています。
http://takagi-hiromitsu.jp/diary/20060409.html#p01
6:  お名前:初心者 2006/05/24 11:26:49

お返事ありがとうございます。

>今後はアドレスバーを表示しないようにすることは出来なくなるでしょう。
javascriptのopen.windowのアドレスバーを隠す引数が使えなくなる(無効)ということですね。

>XP SP2 などで、ポップ アップ ブロッカーを入れて警告が出ないことを確認していますか?
開発環境がWin2000のためまだ確認を行っておりません。
ポップアップブロッガーですか。。
近日中に確認したいとおもいます。

>アドレスを隠すことは出来ませんが、クエリを隠すことは出来ます。
>GET 要求の時(IsPostback が false)
親画面でのGET要求の時ですよね?
>、クエリがあるかないか調べ、
子画面での処理ですよね?
>ある時はクエリをセッション変数にしまい、
子画面での処理ですよね?
>クエリのない自分自身にリダイレクトします。
子画面での処理ですよね?

自分自身にリダイレクトですか。。
なんとなく見えてきました。

Page_Load()
{
 if( Request.QuealyString["date"] != null )
 {
  Session["TEST"] = Request.QuealyString["date"];
  Response.Redirect( TestKo.aspx );
 }
 string date = Session["TEST"].ToString();
 if( date == null )
 {
  エラー処理。
 }
 ロード時の処理・・・
}

こんな感じでしょうか。
ここでもPage_Loadのはじめにif( !IsPostback )
は必要でしょうか?
7:  お名前:初心者 2006/05/24 15:35:02

モーダル画面で、更新がかかってもレイアウトがずれない かつ
クエリーストリングの受け渡しを行う方法

参照HP
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20782&forum=7

<HTML>
 <HEAD>
  <TITLE></TITLE>
  <script language="jscript" >
  <!--
  function setparameta()
  {
  document.getElementById("frameDialog").src = "modal.aspx" + location.search;
  }
  -->
  </script>
 </HEAD>
 <FRAMESET rows="*" frameborder="0" border="0" framespacing="0" onload="setparameta()">
  <FRAME id="frameDialog" name="frameDialog" src="" noresize scrolling="no" frameborder=0>
 </FRAMESET>
</HTML>
8:  お名前:婚礼跟拍视频5aivideo.com婚礼摄影MV-QQ73595 2018/04/30 6:13:23

结婚mv创意视频短片_婚礼创意mv婚礼上播放_婚礼摄像师_婚礼摄像价格_婚礼高清摄像婚礼跟拍视频5aivideo.com婚礼摄影MV-QQ73595
婚礼跟拍视频5aivideo.com婚礼摄影MV-QQ73595 http://www.5aivideo.com/
1
お名前
メッセージ
次回のために入力情報を記録