2008年10月14日

ASP.NET 別Windowを呼び出した後、呼び出しもとのテキストボックスにデータを代入する。

 ASP.NETで別Windowを開き、そこで何らかのデータを入力したとします。

 その入力されたデータを、開いた元のフォーム上に配置されたテキストボックスに代入したいと思います。

 この際、ASP.NETだけでは実現できないんですよね。

 OnClientClickなんかに記入しているのは、結局JavaScriptなんですよね。

 ま、ASP.NETがサーバサイドで、値を代入するのはクライアントサイドなんで、どうにかしてクライアントサイドでの動作を指定してやる必要があるんですよね。


 で、ここで使うのは、「window.opener」です。

>>>



>>>
例えばカレンダー。

別窓でカレンダーを表示させ、そこで日付を選択させます。
選択された日付を、開いた元windowにあるテキストボックスに表示させる方法です。

別窓を開いたりするので、2つのページが必要となります。

<元window>
sample008-opener001.JPG

ボタンの「OnClientClick」プロパティに以下を記述します。
window.open("calendar.aspx","Calendar","width=200,height=300");


<カレンダー>
sample008-opener002.JPG

カレンダーページでは、ボタンも配置しておきます。
カレンダーをクリックして日付を選択した場合、ラベルにその日付を表示すると共に、OKボタンをクリックした際の動作を指定します。
sample008-opener003.JPG


OKボタンの「OnClientClick」に元ページのテキストボックスに値を代入するスクリプトを記述します。
代入後に、自分自身も閉じるように指定しています。
=====================================================
  Private Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged

    'ラベルに選択した日付を表示。
    Label1.Text = Calendar1.SelectedDate

    '記述スクリプトを作成する。
    Dim script As New System.Text.StringBuilder

    'window.openerで、元フォームの代入先を指定する。
    'top_ は元フォームのID
    'TextBox1 は代入先のID
    script.Append("window.opener.top_.TextBox1.value = '" & Label1.Text & "';")

    '自身を閉じるスクリプト
    script.Append("window.close();")

    'ボタンにスクリプトを指定する。
    Button1.OnClientClick = script.ToString

  End Sub
======================================================

<結果>
sample008-opener004.JPG

これを応用していけば、結構便利に使えるかも。。。。




posted by Debring at 19:16 | Comment(1) | TrackBack(0) | ASP.NET Window
この記事へのコメント
こんばんは遊びにきました。
いつ見ても良いブログですよね。
やっぱブログって時間かかって更新とか面倒臭い時もあるけど楽しいですよね^^
私は楽しんでやってます。
もし、良かったら私のブログも見てくださいね。
また遊びにきますね。
ではでは今後とも宜しくお願いします。
Posted by モバゲー男 at 2008年10月14日 19:26
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。