- PR -

webフォームのDataGridの選択ボタンで別フレームにページを表示するには?

投稿者投稿内容
ASP.NET初心者
会議室デビュー日: 2004/08/13
投稿数: 19
投稿日時: 2004-12-28 08:58
ASP.NETでVBを使い開発を行っています。
以下のようなフォームを実現したいと思っています。
上下に分割されたフレームの上段にボタン列の選択ボタンを配置したデータグリッドを配置し、データの一覧を表示させ、選択ボタンをクリックした時に下段のフレームに選択した行のデータを表示し編集できるようにする。
この場合の下段のフレームにページを表示させる方法が分かりません。
フレームを指定してページを表示するには、クライアント側のスクリプトかリンクタグを書かなければならないと思うのですが、選択ボタンのクリックイベントにどのようなコードを書けば良いのでしょうか。また、下段のページを表示する際には、表示すべきデータのキー値を引数として渡す必要があるのですがどのようすれば良いでしょうか。
どなたか、ご存知のかたご教授願います。
_________________
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-12-28 10:17
まずは、フレームをやめるのがいちばんいいです。
現行ASP.NETでフレームを扱うのは面倒です。
フレームを使わなくても上下に分割した構成にできます。
必要の無いときには非表示にすればいいでしょう。


_________________
たつごろー
codeseek
こみゅぷらす
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-12-28 10:44
フレームの扱いに対するお答え

上フレームにある「選択ボタン」のクリックで、下フレームの内容を
変えたい、ということですよね。

上のボタンをhtmlのボタンにして、onclick時に下フレームのhiddenフィールド
を変更したあと、下フレームをsubmitしてはいかがでしょう。


_________________
たつごろー
codeseek
こみゅぷらす
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2004-12-28 11:01
こんにちは。私の方法ですので、他にも良い方法があるかもしれませんが、下記にサンプルを
記載しておきます。

コード:

Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand

Dim lstbBuff As StringBuilder
Dim lstrStartupScript As String

lstbBuff = New StringBuilder


lstbBuff.Append("<script language=javascript>" & vbCrLf)
lstbBuff.Append(vbTab & "parent.main.document.Form1.TextBox1.value = '" & キー値 & "'" & vbCrLf)
lstbBuff.Append("</script>")

lstrStartupScript = lstbBuff.ToString()

Me.RegisterStartupScript("startup", lstrStartupScript)
End Sub



parent.main.document.Form1.TextBox1.value に関しては、

parent 親
main フレーム名()
document ドキュメント
TextBox1 テキストボックス(hidden)

@ 選択ボタン押下された時に、RegisterStartupScriptでJavaScriptを追加。
  テキストボックス(hidden)にキー値をセット
A キー値を使ってその後の処理を、Page_Loadに記載。TextBox(hidden)に何も
  値が無い場合は何もしないようにする。
※注意点
DataGridのページング機能を使用している際は、DataGrid1_ItemCommandに
コード:

'' 選択された行が"-1"の場合はページング処理実行なので、何もしない
If e.Item.ItemIndex < 0 Then
'' 何もしない
Else
'' Script追加処理
End If



何かご不明な点ありましたら、お知らせください。何度も言うようですが、他にも
たくさんやり方はあると思われます。例えばSession変数を使って、PostBackさせ
るとか。。。

[ メッセージ編集済み 編集者: SE卵 編集日時 2004-12-28 11:03 ]
ASP.NET初心者
会議室デビュー日: 2004/08/13
投稿数: 19
投稿日時: 2004-12-28 12:11
回答ありがとうございます。
たつごろーさんに2点ほどお聞きしたいのですが。
まず1点は、フレームを使わずに画面分割できるということですが、具体的にはどうやるのでしょうか。
2点目は、「上のボタンをhtmlのボタンにして、onclick時に下フレームのhiddenフィールド
を変更したあと、下フレームをsubmitしてはいかがでしょう。」とあるのですが、DtatGridのボタン列の選択ボタンをhtmlボタンにできるのでしょうか。選択ボタンをクリックした時に選択行の書式を変える等の機能はそのまま使いたいのですが....
宜しくお願いします。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-12-28 13:03
引用:

まず1点は、フレームを使わずに画面分割できるということですが、具体的にはどうやるのでしょうか。



私が書いた意図は、ASP.NETの1ページを、上段、下段に見た目を分けて使ってはいかがでしょうか、というものです。

引用:

2点目は、「上のボタンをhtmlのボタンにして、onclick時に下フレームのhiddenフィールド
を変更したあと、下フレームをsubmitしてはいかがでしょう。」とあるのですが、DtatGridのボタン列の選択ボタンをhtmlボタンにできるのでしょうか。選択ボタンをクリックした時に選択行の書式を変える等の機能はそのまま使いたいのですが....
宜しくお願いします。



なにか条件があるのでしたらはじめにご提示ください。
遠回りになります。

やりたいことと、その方法は別ですよね。
ASP.NET初心者さんは、方法にこだわっているのですか?それともやりたいことを実現したいだけですか?

引用:

等の機能はそのまま使いたい



私はやったことがありませんので、ほかの詳しい方のご説明を待ちます。

SE卵さんが提示してくださった方法はどうでしたか?


_________________
たつごろー
codeseek
こみゅぷらす
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2004-12-28 13:41
こんにちは。勝手に代返してすいません。

引用:

まず1点は、フレームを使わずに画面分割できるということですが、具体的にはどうやるのでしょうか。



パネルを使ったり、ラインを引くとか、要はHTMLなんですからレイアウトは人それぞれ工夫す
れば、ある程度のことは出来るかと。。。

引用:

2点目は、「上のボタンをhtmlのボタンにして、onclick時に下フレームのhiddenフィールド
を変更したあと、下フレームをsubmitしてはいかがでしょう。」とあるのですが、DtatGridのボタン列の選択ボタンをhtmlボタンにできるのでしょうか。選択ボタンをクリックした時に選択行の書式を変える等の機能はそのまま使いたいのですが....
宜しくお願いします。



DataGridにテンプレート列を追加し、ItemTemplate列にHTMLのButtonを追加します。
その後、ButtonのonClickでJavaScriptの関数なりなんなりで処理を実行します。
残る問題は、DataGridの選択された行の書式を変えるということですよね?これは、
正直面倒です。実際に動作確認はしてないんので、あくまで推測ですが、PostBack等
で画面を更新してやらないの無理??なのでは。。。いや無理と言うと駄目ですね。
(あんまり調べてないので )どうにかすれば出来るんでしょうが、既存の
DataGridの機能を使う方が効率的ではないかと思われます。


[ メッセージ編集済み 編集者: SE卵 編集日時 2004-12-28 13:42 ]
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-12-28 13:57
ボタン列の選択ボタンに「onclick時に下フレームのhiddenフィールド
を変更したあと、下フレームをsubmit」する処理を追加すればよいでしょう。

[ASP.NET]DataGridコントロールの削除ボタンで確認メッセージを表示するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/104confirmdg/confirmdg.html

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