- - PR -
showModalDialogでの日付入力について
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-02-24 13:57
うーん、僕もモーダルダイアログ好きなんですが(笑)
>IEならScriptからshowModalDialogをよびだせますよ。 おお、知らなかった(笑)。これはいわゆるVBScriptの命令の一つですねー。 まるっきりWindow.Openのようだ(笑)。 しかし、残念ながらこの構文を使ってもいわゆるモーダルダイアログには ならず、親元も操作できてしまう・・・。 >要件としましては子画面が開いている最中に親画面 >をさわれないようにしたいのです。 少し、発想の転換というか逃げですが(笑)、要は子画面が開いている最中に 親画面のコントロールにロックがかかれば良いということではないでしょうか?。 親画面のウィンドウそのものを表示されるのは逃げようが無いかもしれませんが、 コントロールを無効にすることはできるかと思います。 1.子画面を呼び出すためのボタンが押された。 2.親画面のコードで、親画面の各コントロールを無効にする。 3.子画面を表示するためのWindow.OpenないしはshowModalDialogを出力する。 4.子画面の入力が終わり、表示を終了するボタンが押された 5.親画面の各コントロールを有効にする 6.子画面を閉じる うわ、これをコーディングするのは面倒くさいな!(笑) JAVAScript使いまくりですがな(苦笑)もう一段階ひねりましょうか・・・・ 1.子画面を呼び出すためのボタンが押された。 2.同じページ内に用意していた、「子画面用のテーブル」を非表示から表示に変える。 3.同じページ内の「親画面用のテーブル」を非表示にする。 4.子画面の入力が終わり、表示を終了するボタンが押された 5.子画面用テーブルを非表示にし、入力を反映。 6.親画面用テーブルを表示 いかがでしょうか?(笑)これならひとつのファイルで済み、しかもサーバサイドオンリー。 コーディング量も微々たる物で、親画面をさわろうったって不可能(笑) ASP.NETの真価が生かしやすいフローだとは思いますが、邪道でしょうね(笑) いやまぁ、僕の知らない機能とかでもっとスマートにできるのかもしれませんが。 _________________ -------------------------------------- ネットビルド 小田原貴樹 odahara@netbuiuld.jp -------------------------------------- |
|
投稿日時: 2003-02-24 15:05
>>IEならScriptからshowModalDialogをよびだせますよ。
>おお、知らなかった(笑)。これはいわゆるVBScriptの命令の一つですねー。 ちがいます。 IEがもってるオブジェクトモデルに含まれてますから JScriptからでも呼び出せます。 #J2EEつかったシステムでJScript使ってよびだしてるし。 >まるっきりWindow.Openのようだ(笑)。 仕組みのベースになってるのはWindow.Openでしょね。たぶん。 >しかし、残念ながらこの構文を使ってもいわゆるモーダルダイアログには >ならず、親元も操作できてしまう・・・。 そんなことはないはずです。 これがモーダルダイアログになってなかったら、上記の システムは破綻してますから。 こっちでは実際に動きをたしかめてるんですが、本当に 親元操作できます??? |
|
投稿日時: 2003-02-24 15:42
えー、大変失礼いたしました(笑)
IEのクライアントサイドで問題なければ、shuさんのおっしゃるとおり showModalDialogで何の問題もございません。解決しております。 >IEがもってるオブジェクトモデルに含まれてますから >JScriptからでも呼び出せます。 MSから提供されているものだったら、なんでもVBScript(笑)呼んでしまう癖が(笑) >こっちでは実際に動きをたしかめてるんですが、本当に >親元操作できます??? いや、できませんでした(笑)。失礼いたしました。サンプルの見方が悪かった。 ということで、ttcoupeさん、IE限定という条件で問題なければ、showModalDialogで なんの問題もないかと。 僕も大変参考になりました。shuさん、ありがとうございました。 _________________ -------------------------------------- ネットビルド 小田原貴樹 odahara@netbuiuld.jp -------------------------------------- |
|
投稿日時: 2003-02-24 18:19
みなさんありがとうです。
そうですね、ここはワガママ言わずにクライアントスクリプトで がんばってみます。 ありがとうございました。 |
|
投稿日時: 2003-02-24 18:46
ワガママもなにも、window.openを利用するのもクライアントスクリプトを
利用する方法だと思いますが。。。 #もしかして、それがわかってなかった? |
|
投稿日時: 2003-02-26 19:10
すみません。できないです(泣)
親ページ.aspx.vb ---------------------------- Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ページを初期化する ユーザー コードをここに挿入します。 Button2.Attributes.Add("onClick", "GetDate();") End Sub ---------------------------- 親ページ.aspx ---------------------------- <script type="text/javascript"> <!-- function GetDate(){ var ret; ret = showModalDialog('/Sample200/PopCalendar2.aspx', '', 'dialogheight:250px;dialogwidth:160px;status:no;help:no;scroll:no'); document.Form1.TextBox1.Value = ""; document.Form1.TextBox1.Value = ret; } //--> </script> ---------------------------- 子ページ.aspx.vb (カレンダーです) ---------------------------- Private Sub Calendar1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged Dim strSource As String = Request.Params("source") Dim dtmDate As DateTime = Calendar1.SelectedDate Dim strScript As String = "" strScript &= " <script language=javascript>" strScript &= " parent.retValue = '" & dtmDate.ToString("d") & "';" strScript &= " parent.close;" strScript &= " </script>" Response.Write(strScript) End Sub ---------------------------- とすると新しいページが開くんです。 みなさんはどうやっていますでしょうか。 よろしくお願いします。 |
|
投稿日時: 2003-02-26 19:10
すみません。
子ページの Dim strSource As String = Request.Params("source") は不要です。 |
|
投稿日時: 2003-02-27 09:53
みかんさんが言ってるあたり
:ただ、フレームを入れ子にしないとsubmitとかソースの表示とかできなくて開発は面倒ですけど。。。 が回答かな? でも、これできちんと動くようにするのは結構面倒そう。 |