- PR -

子画面が一度に閉じない?

投稿者投稿内容
チャチャ
常連さん
会議室デビュー日: 2003/10/13
投稿数: 42
投稿日時: 2006-06-27 19:19
window.opener.document.getElementById(strCtrl).value = strCd;

いつもお世話になります。
現在、VB.NETでWebアプリを開発しています。
子画面のDataGrid一覧からに行選択をしたら、子画面を閉じて
親画面に戻る処理ですが、
DataGridにテンプレートのボタンを作成して、ボタンを選択すると、
子画面を閉じない、もう一度ボタンを選択すると、子画面が閉じられます。
二回にボタンを押さないといけない動作が解消したいのですが、
どなたか教えていただければうれしいです。
よろしくお願いいたします。

****ソース*********
Sub dbgrdSrc_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dbgrdSrc.ItemCommand

Dim btnName As New Button
btnName = CType(dbgrdSrc.Items(0).FindControl("gdbtnSel"), Button)
Session("strCode") = e.Item.Cells(0).Text
Session("strName") = e.Item.Cells(1).Text

btnName.Attributes("onclick") = "window.close();"

End Sub


べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-06-27 19:29
引用:
btnName.Attributes("onclick") = "window.close();"

この処理が走るのは1回目にボタンが押されたとき。つまり、
onclick="window.close()";
となるのは1回目にボタンが押された後ですよね。だからです。

表示された時点で
onclick="window.close()";
が書かれたようにするか、ボタンを押されたときに「window.close();」そのものを実行
させるか、ですね。(RegisterClientなんとかを使用?)
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-06-27 19:36
クライアントに出力された HTML はどうなっていますか?
チャチャ
常連さん
会議室デビュー日: 2003/10/13
投稿数: 42
投稿日時: 2006-06-27 19:38
引用---------------------------
表示された時点で
onclick="window.close()";
が書かれたようにするか、ボタンを押されたときに「window.close();」そのものを実行させるか、ですね。(RegisterClientなんとかを使用?)
--------------------------------

二つの方法がまだよくわからないですが、
子画面は検索画面で、テキストボックスに何か入力されたら検索し、データグリッドをフォームにバインドしていくんですので、1つ目はどういうふうに実現できるのかわからない。
二つ目の方法がどこに記述すればまだ、要領が理解していない。
RegisterClientについて使ったことないので、ちょっと調べます。

ご教授をお願いいたします。
チャチャ
常連さん
会議室デビュー日: 2003/10/13
投稿数: 42
投稿日時: 2006-06-27 19:47
かるあさんへ
以下はHTMLのソースです
**********************************
<table>
<tr >
<td >ID</td>
    <td >名称</td>
<td >&nbsp;</td>
</tr>
<tr >
<td >000001</td>
<td >鈴木 ◎子</td>
    <td >
<input type="submit" name="dbgrdSrc:_ctl2:gdbtnSel" value="選択" id="dbgrdSrc__ctl2_gdbtnSel" />
    </td>
</tr>
</table>

******************************************
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-06-27 20:01
引用:
子画面は検索画面で、テキストボックスに何か入力されたら検索し、データグリッドをフォームにバインドしていくんですので、1つ目はどういうふうに実現できるのかわからない。

行選択したら、ってことは各行にボタンがあるのかな。
それだとDataGridのItemCreatedイベントあたりを使うんだと思います。

引用:
二つ目の方法がどこに記述すればまだ、要領が理解していない。
RegisterClientについて使ったことないので、ちょっと調べます。

RegisterClientScriptBlockです。

この掲示板にも過去ログが結構あると思うので上記をしらべてみるといいかも。

記事もあるかもしれません。
http://www.atmarkit.co.jp/fdotnet/

[追記]
ぁ、まてよ。サーバで処理が必要で、かつwindowを閉じなきゃいけないなら、
下側の方法がいいのかな。

[ メッセージ編集済み 編集者: べる 編集日時 2006-06-27 20:44 ]
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-06-27 20:06
チャチャさんのおっしゃるとおり
window.close() は最初に DataGrid を作成したときに
各ボタンに関連付けないといけないと思います。

かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-06-27 20:18
引用:

チャチャさんの書き込み (2006-06-27 19:38) より:

子画面は検索画面で、テキストボックスに何か入力されたら検索し、データグリッドをフォームにバインドしていくんですので、1つ目はどういうふうに実現できるのかわからない。


データグリッドにデータをバインドした後(するとき?)に
全行のボタンの onclick に javascript:window.close() を割り当てます

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