- PR -

DataGridのハイパーリンク列のデータの取得

1
投稿者投稿内容
わん
会議室デビュー日: 2003/09/06
投稿数: 2
投稿日時: 2003-09-06 20:56
こんにちは。
いろいろ調べたのですが、わからないことがあり質問させていただきます。
(Vasic で作成)

DataGridのデータの取得の方法についてですが、
sHoge = myDataGrid.Items.Item(i).Cells.Item(j).Text
とすると指定したセルのデータを取得できるのですが、
ハイパーリンク列の場合はこれでは取得できませんでした。

どのようにすれば、ハイパーリンク列のテキストデータが取得できるのでしょうか?
アドバイスをよろしくお願いします。

[ メッセージ編集済み 編集者: わん 編集日時 2003-09-08 17:03 ]
いし
常連さん
会議室デビュー日: 2003/04/15
投稿数: 27
投稿日時: 2003-09-08 07:21
セルの中にハイパーリンクコントロールが作成されているはずなので、
Cells.Item(j).Controlsを使って取得して、そのコントロールのプロ
パティから取得できると思います。

VBは使っていないので、コード的にあやふやなんですが・・・
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-09-08 09:30
おはようございます。

当方では不可視列を追加し、
そこに取得したい列の値を格納しています。
この方法なら見た目は変わらず、かつTextで取得可能です。

参考になれば幸いです。

[ メッセージ編集済み 編集者: まゆりん 編集日時 2003-09-08 09:32 ]
聖人@SKB
ベテラン
会議室デビュー日: 2003/03/26
投稿数: 58
お住まい・勤務地: 横浜(MM21)勤務の筈だがいつも顧客先常駐
投稿日時: 2003-09-08 12:46
「ハイパーリンク列のテキストデータ」とはURLのことでしょうか。
でしたら,

((DataGrid)(DataGrid1.Items[i].FindControl("HyperLink1"))).NavigateUrl
で,取得可能です。因みにこれはC#。
DataGrid内の各種コントロールは
 ・FindControl("コントロールの名称")
 ・取得したいコントロールの型で型変換
で,情報を得られます。

VBで書くとこんな感じなのでしょうか。
Dim obj As New HyperLink()
obj = CType(DataGrid1.Items(i).FindControl("HyperLink1"), HyperLink)
obj.NavigateUrl で値がとれます。

VBでの型変換,あってますか?自信なし。

※いし さんの回答と似た回答です。
わん
会議室デビュー日: 2003/09/06
投稿数: 2
投稿日時: 2003-09-08 17:02
いしさん、まゆりんさん、聖人さん、ありがとうございます。

みなさまのアドバイスをもとに、
sHoge = CType(myDataGrid.Items.Item(i).Cells.Item(j).Controls.Item(0), HyperLink).Text
で取得することができました。

sHoge = CType(myDataGrid.Items.Item(i).Cells.Item(j).Controls.Item(0), HyperLink).NavigateUrl
とするとURLも取得できました。

Controls.Item(0)にしたらよいことになかなか気づかず、お礼が遅くなってしまいましたが
本当にありがとうございました。
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2004-02-14 14:23
ハイパーリンクの項目を選択したときに、項目に入っているテキストを取得したいのですが、
Page_Loadの中でFindControlを使用すればいいのでしょうか?

DataGridのハイパーリンク列のデータの取得をする場合に、
引用-----------------------------------------------
DataGrid内の各種コントロールは
 ・FindControl("コントロールの名称")
 ・取得したいコントロールの型で型変換
-----------------------------------------------
となっているのですが、"コントロールの名称" というのは
HyperLinkColumunに設定するtextのことでしょうか?
((DataGrid)(DataGrid1.Items[i].FindControl("HyperLink1"))).NavigateUrl
↑の【.NavigateUrl】が出てこないのですが、DataGridとして認識
されていないのでしょうか?

HTMLの中で以下のようにかいているのですが、おかしな部分があったら教えてください。
<asp:DataGrid ID="grd1" AutoGenerateColumns="False" Runat="server" DataKeyField="source1">
<Columns>
<asp:HyperLinkColumn HeaderText="商品名" DataTextField="source1" DataNavigateUrlField="id" DataNavigateUrlFormatString="sample.aspx?id{0}" Text="Name"' />
<asp:BoundColumn HeaderText="金額" DataField="YosanGengaku"/>
</Columns>
</asp:DataGrid>
1

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