- PR -

DataGridの選択ボタンで別ウィンドウを開きたい

1
投稿者投稿内容
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-06-22 10:53
いつも拝見させていただいております。

DataGridに[選択]ボタンを用意し、クリックされたら
別のWindowを開きたいと思います。

------------------------------------------------------------
Dim strScript As String

strScript = "<script language=JavaScript>" & vbCrLf
strScript &= "<!--" & vbCrLf
strScript &= "window.open('Form1.aspx', '_blank','scrollbars=yes,resizable=yes,
dependent=yes,width=900,height=700');" & vbCrLf

strScript &= "//-->" & vbCrLf
strScript &= "</script>" & vbCrLf
If Me.IsStartupScriptRegistered("DataRef") = False Then
Me.RegisterStartupScript("DataRef", strScript)
End If
------------------------------------------------------------

結果、画面は開いてくれませんでした。
それどころか、DataGridのインデックスの高さがUPして、さらに
明細行が全て消えてしまいます。

新しい画面を開いても元の画面は操作できるようにしたいので
モーダルにせず window.open を使いました。

これらの現象は普通の動きなのでしょうか・・・?

よろしくお願いいたします
Moo
大ベテラン
会議室デビュー日: 2004/04/12
投稿数: 118
お住まい・勤務地: 地球・港
投稿日時: 2005-06-22 11:32
DataGridのItemDataBoundで
コード:
        Dim myButton As Button = e.Item.FindControl("ButtonChoice")
        myButton.Attributes("OnClick") = "return myPopUp('opener.aspx');"


のような手続きをしてみてはどうですか?
#myPopUpはwindow.open()を実行するfunctionとして書いておいてください。
_________________
ASP/ASP.NETだいすき。 ASP++ by Moo http://moo-asp.net/
日記は ほぼ毎日更新中 http://d.hatena.ne.jp/aspx/
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-06-22 12:00
Moo様、ありがとうございます!

説明が足りなかったのですが、画面を開く前にDataGridの値を
Sessionにセットする必要があります。
その場合、ItemDataBoundで出来ますでしょうか?

また、DataGridの値によって開きたい画面が異なります。

投稿してからさらに調査してみたのですが、ボタンクリック時に
DataGridのインデックスの高さが変わったり、明細行が消えたり
する原因は違うところにあるようです。
以前はこのような現象はおきなかったのですが、インデックス
部分をクリックしてソート(昇順・降順)ができるように修正
してから発生するようになりました。
どうやらこれが原因のようです。
が、対応策はまだ見つかっておりません。

こちらについてもお心当たりがございましたら、よろしくお願い
いたします。

自分でもさらに調査いたします♪
Moo
大ベテラン
会議室デビュー日: 2004/04/12
投稿数: 118
お住まい・勤務地: 地球・港
投稿日時: 2005-06-22 13:29
Sessionに値を格納するタイミングが
子画面のLoad時でよいのであれば、
window.open時にパラメータとして与えてあげればよいと思いますが...

コード:
       Dim myID As TextBox = e.Item.FindControl("TextBoxID")'キーが格納されている
       Dim myButton As Button = e.Item.FindControl("ButtonChoice")
       myButton.Attributes("OnClick") = "return myPopUp('opener.aspx'," + _
        myID.Text + ");"


上記コードは完全ではありません。
javascript:myPopUpの引数を拡張しました。
_________________
ASP/ASP.NETだいすき。 ASP++ by Moo http://moo-asp.net/
日記は ほぼ毎日更新中 http://d.hatena.ne.jp/aspx/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-06-22 21:34
引用:

投稿してからさらに調査してみたのですが、ボタンクリック時にDataGridのインデックスの高さが変わったり、明細行が消えたりする原因は違うところにあるようです。


 DataGridに表示するデータをViewStateに保存して、データをバインドするのを、データが変わったときだけにすれば、そのような現象は発生しないと思います。


引用:

説明が足りなかったのですが、画面を開く前にDataGridの値をSessionにセットする必要があります。その場合、ItemDataBoundで出来ますでしょうか?


 まずはMSDNで、ItemDataBoundを調べましょう。また、ASP.NETの状態管理に関する項目にも目を通しましょう。
_________________
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-06-23 11:05
皆様、ありがとうございます!!!

何とか出来ました☆

画面を開くところは、こんな感じで)
-----------------------------------------
Dim scriptString As String
scriptString = "<Script language=""javascript""> " & vbCrLf
scriptString &= "<!--" & vbCrLf
scriptString &= "var w " & vbCrLf
scriptString &= "w = window.open('SinseiGamen.aspx','_blank','menubar=no,toolbar=no');" & vbCrLf

scriptString &= "//-->" & vbCrLf
scriptString &= "</Script>" & vbCrLf

If Me.IsStartupScriptRegistered("DataRef") = False Then
Me.RegisterStartupScript("DataRef", scriptString)
End If
-----------------------------------------
でも、いまひとつ理解できていないです;;
(もう少し勉強します)

ソートのところも上手くできました!
ありがとうございました。


ずうずうしく、もう一つお聞きしたいのですが、、、。

DataGridで編集ボタンとかを押すと、その行の色が
変わりますよね。
その状態でソートすると、この色が指定されている行に
ついていかないんです。

【昇順】
1行目  キー値:1
2行目  キー値:2
3行目  キー値:3  ←現在はココが指定されて色が違う

  ↓

【降順】
1行目  キー値:3  ←降順ソート後はココの色が変わってほしい
2行目  キー値:2
3行目  キー値:1  ←同じ場所が指定されたまま
 
全く検討がつきません。

申し訳ございませんが、ご教授ねがいます。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-06-23 12:11
NAL-6295です。

違う内容の質問は新規にスレッドを起こしたほうが後で参照する方のためになりますので、そのようにしていただけませんでしょうか。

_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2005-06-23 13:05
それもそうですネ!

もう少し調べてみて、わからないときはまた
ご質問いたしますので、そのときは宜しく
お願いいたします。
1

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