- - PR -
データグリッドの対象行を別フレームに表示
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-10-21 20:20
こんにちは。。。
以前にもフレーム間のデータ受け渡しのスレッドが立っていましたが、再度、スレッドを立てさせていただきました。ご教授の程よろしくお願いします。 ASP.NETで、今やろうとしていることは、フレームが上下に分かれていて、上のフレーム(name=top)にデータグリッドを配置していて、各行に選択ボタンがついています。 データグリッドの選択ボタンをクリックすると、その行が、詳細情報として下のフレーム(name=bottom)に表示されるというものです。 データグリッドは、ページング機能が付いています。 以前のスレッドのように、<form>タグに<target="bottom">と記述するわけにもいかず(ページングが設定してあるため)、ということでJavascriptであろうと思うのですが、どう記述していいかわかりません。 記述について、詳しくご教授いただければ幸いです。以上、よろしくお願いします。 |
|
投稿日時: 2002-10-23 10:47
>以前のスレッドのように、<form>タグに<target="bottom">と記述するわけにもいかず(ペー>ジングが設定してあるため)、ということでJavascriptであろうと思うのですが、どう記述し>ていいかわかりません。
まったくその通りでして、ページングがある場合には極めて難しい遷移になりざるを得ません。 僕もショッピングサイトを作っている関係上、DataGridで一覧、選択されたものを詳細表示というパターンは多いのですが、はたして、potetoさんが、フレームで分けなければならない理由というのは何でしょう? 同じページ内に、DataGridとDataListを二つおいても問題ないように思えます。それであれば極めて簡単だと思うのですが。 _________________ -------------------------------------- ネットビルド 小田原貴樹 odahara@netbuiuld.jp -------------------------------------- |
|
投稿日時: 2002-10-23 17:55
うりゅうさん ご返答ありがとうございます。また、ご返事が遅くなりましてスイマセン。
>同じページ内に、DataGridとDataListを二つおいても問題ないように思えます。それであれば極めて簡単だと思うのですが。 そうなんです。同一フォーム内なら、なんら問題ないのですが、お客様の要望において、どうしてもフレームにしないといけないんです・・・(^^; データグリッドの行数を任意に指定させているので、行数を増やした場合、隠れてしまうので。 とりあえず、試行錯誤にデータグリッドの『選択』ボタンにJavascriptを埋め込んでフレームへのリンクはできたのですが、新たな問題が発生しています。 それは、『選択』ボタンにフックしている『ItemCommand』イベントメソッドに、下のフレームに値を渡すコードを色々と記述しているのですが、Javascriptによるフレームリンクが先に実行されてしまって、イベントで設定した値を、下フレームのフォームは受け取らないんですよね。。。 今は、仕方ないので、『詳細表示』ボタンを別に設けて、データグリッドで対象の行を選択→イベント実行→『詳細表示』ボタンをクリック→下フレームへのリンク(Javascript実行)としています。。。 いい方法はないものかな・・・ |
|
投稿日時: 2002-10-24 10:09
自己レスです。
何とか目的を達成できました。以下の通りです。 ※上フレーム:top.aspx 下フレーム:bottom.aspx (1)top.aspxのデータグリッド生成時に、『選択』ボタンに対してbottom.aspxに渡したい値を格納するQueryString付きのURLを、Javascriptのリンクを埋め込む。 例)『選択ボタン』.Attributes["onclick"] = "javascript:parent.bottom.location.href = ('bottom.aspx?test=" + 値 + "');"; (2)bottom.aspxのPage_Laodに、QueryStringを受け取るコードを記述。 例)NameValueCollection qs1 = Request.QueryString; string qs2= qs1.GetKey(0); string[] qs3 = qsAuctionId.GetValues(qs2); int testCode = Convert.ToInt32(qs3[0]); こんな感じです。 あまりスマートな記述ではないと思いますが、自分にはこれが精一杯でした・・・ 他に、『このやり方のほうが良い』などありましたら、ご教授いただきたく思います。 よろしくお願いします。 |
1