- PR -

Datagridの列の値を取得して、別Windowで表示する方法

1
投稿者投稿内容
kage
会議室デビュー日: 2005/07/28
投稿数: 5
投稿日時: 2005-09-02 14:30
いつもお世話になっています。

ASP.NETでC#を使って開発をしようとしているのですが、javascripとの組み合わせについての質問です。

datagridの中で、各列のリンク先の値を取って、別ウィンドウで表示させようとしています。
その際、javascriptでidを変数として渡したいのです。
色々と試したのですが、どうも上手くいきません。

下記のソースでは、idを変数として扱おうとしています。

渡す側のソース(上手くいかなかったソース)
コード:
@Ref.Attributes["onclick"] =  "window.open('past_item.aspx?id='+Server.UrlEncode(id),'new', 'width=800,height=200');";
Astring adress = "past_item.aspx?id="+ id;
 Ref.Attributes["onclick"] =  "window.open('Server.UrlEncode(adress)','new', 'width=800,height=200');";



受ける側のソース
コード:
string id = Request.QueryString["id"];


よろしくお願いします。
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-09-02 15:15
HTMLソースを見ていただければわかるのですが、DataGridの各行におけるコントロールのクライアントIDは、ASP.NETによって自動的に与えられます。
DataGridはブラウザ上では<table>タグに変換されていますから、上記のクライアントIDで探せば、javascriptで値が取れるはずです。

しかし、今回の場合は、各行にリンクボタンのようなものがあるようですので、DataGridの各行がデータバウンドする際に、idを含めた形でリンク先のURLをセットしてあげれば、実現できるような気がします。
kage
会議室デビュー日: 2005/07/28
投稿数: 5
投稿日時: 2005-09-02 15:29
trapemiyaさん、早速の返答、ありがとうございます。

上記のコードは、DataGridの"OnItemDataBound"のコマンドの中に入れてます。
なので、idの値は取得できています。

ただ、取得した値とリンク先のURLを結合する仕方が分からなくて苦労してます。
(↑この部分をもっと明確に書いておくべきでした・・・)

Ref.Attributes["onclick"] = "window.open('past_item.aspx?id='<% id %>,'new', 'width=800,height=200');";

などとして、ヒモ付けしようとしたのですが、失敗しまいます。
と書くと文字列として認識されてしまいますし、

VBを用いた解決策はいくつか見つけたのですが、同じようにはできませんでした・・・。
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-09-02 17:33
>上記のコードは、DataGridの"OnItemDataBound"のコマンドの中に入れてます。
>なので、idの値は取得できています。

すみません。ですね。(^^;

Ref.Attributes["onclick"] =
"window.open('past_item.aspx?id='" + Server.UrlEncode(id) + "','new', 'width=800,height=200');";

で、いいんじゃないでしょうか?
kage
会議室デビュー日: 2005/07/28
投稿数: 5
投稿日時: 2005-09-02 23:55
>trapemiyaさん
できました!
こうやって文字列を結合すれば良かったですね!
いい勉強になりました!
ありがとうございましたm(_ _)m
1

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