- PR -

データグリッドの対象行を別フレームに表示

1
投稿者投稿内容
poteto
ベテラン
会議室デビュー日: 2002/08/08
投稿数: 50
投稿日時: 2002-10-21 20:20
こんにちは。。。
以前にもフレーム間のデータ受け渡しのスレッドが立っていましたが、再度、スレッドを立てさせていただきました。ご教授の程よろしくお願いします。

ASP.NETで、今やろうとしていることは、フレームが上下に分かれていて、上のフレーム(name=top)にデータグリッドを配置していて、各行に選択ボタンがついています。
データグリッドの選択ボタンをクリックすると、その行が、詳細情報として下のフレーム(name=bottom)に表示されるというものです。
データグリッドは、ページング機能が付いています。

以前のスレッドのように、<form>タグに<target="bottom">と記述するわけにもいかず(ページングが設定してあるため)、ということでJavascriptであろうと思うのですが、どう記述していいかわかりません。

記述について、詳しくご教授いただければ幸いです。以上、よろしくお願いします。
うりゅう
大ベテラン
会議室デビュー日: 2002/06/15
投稿数: 202
お住まい・勤務地: Hiroshima
投稿日時: 2002-10-23 10:47
>以前のスレッドのように、<form>タグに<target="bottom">と記述するわけにもいかず(ペー>ジングが設定してあるため)、ということでJavascriptであろうと思うのですが、どう記述し>ていいかわかりません。

まったくその通りでして、ページングがある場合には極めて難しい遷移になりざるを得ません。

僕もショッピングサイトを作っている関係上、DataGridで一覧、選択されたものを詳細表示というパターンは多いのですが、はたして、potetoさんが、フレームで分けなければならない理由というのは何でしょう?

同じページ内に、DataGridとDataListを二つおいても問題ないように思えます。それであれば極めて簡単だと思うのですが。
_________________
--------------------------------------
ネットビルド 小田原貴樹
odahara@netbuiuld.jp
--------------------------------------
poteto
ベテラン
会議室デビュー日: 2002/08/08
投稿数: 50
投稿日時: 2002-10-23 17:55
うりゅうさん ご返答ありがとうございます。また、ご返事が遅くなりましてスイマセン。

>同じページ内に、DataGridとDataListを二つおいても問題ないように思えます。それであれば極めて簡単だと思うのですが。

そうなんです。同一フォーム内なら、なんら問題ないのですが、お客様の要望において、どうしてもフレームにしないといけないんです・・・(^^;
データグリッドの行数を任意に指定させているので、行数を増やした場合、隠れてしまうので。

とりあえず、試行錯誤にデータグリッドの『選択』ボタンにJavascriptを埋め込んでフレームへのリンクはできたのですが、新たな問題が発生しています。
それは、『選択』ボタンにフックしている『ItemCommand』イベントメソッドに、下のフレームに値を渡すコードを色々と記述しているのですが、Javascriptによるフレームリンクが先に実行されてしまって、イベントで設定した値を、下フレームのフォームは受け取らないんですよね。。。
今は、仕方ないので、『詳細表示』ボタンを別に設けて、データグリッドで対象の行を選択→イベント実行→『詳細表示』ボタンをクリック→下フレームへのリンク(Javascript実行)としています。。。

いい方法はないものかな・・・
poteto
ベテラン
会議室デビュー日: 2002/08/08
投稿数: 50
投稿日時: 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

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