以下のようにASP.NETにて、DataGridへデータをセットし表示したのですが、さらにヘッダーの項目名(名前、年齢)をハイパーリンクにし、クリックして別の詳細ページへ飛ぶなどの動作をさせたいと考えています。
いろいろ調べましたが、記述方法がわかりません。
どなたかアドバイスお願いします。
----------------------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs)
' DataGridへバインドする
If Not Me.IsPostBack Then
' 独自のDataAdapterを作成する
Dim da As New SqlDataAdapter( _
"SELECT fullname as 名前, age as 年齢 FROM person", _
Me.SqlConnection1)
Dim ds As New DataSet
' データ検索
da.Fill(ds)
' DataGridへバインド
Me.DataView1 = New DataView(ds.Tables(0))
Me.DataBind()
End If
End Sub
No.3ベストアンサー
- 回答日時:
ANo.2です。
DataGridのItemDataBoundイベントで設定します。
下記のコードで項目名をハイパーリンクにできます。
また、「QNo.2555028 ASP.NET DataGridの項目数(列数)の取得」
の補足の回答も記します。
Protected Sub dgList_ItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) _
Handles dgList.ItemDataBound
' 行の種類を調べる。「ItemType」が「Header」の場合、
' ヘッダー行である。
If e.Item.ItemType = Header Then
' 各ヘッダー列にハイパーリンクを設定する。
e.Item.Cells(0).Text = "<a href='aaa.aspx'>名前</a>"
e.Item.Cells(1).Text = "<a href='bbb.aspx'>年齢</a>"
' DataGridの列数を知る。
Label1.Text = e.Item.Cells.Count
End If
End Sub
※ dgListはDataGridのID
この回答への補足
回答ありがとうございます!!
ご解答頂いてから、いろいろ試していたのですが、列は諸事情でプログラムで以下のように作成することになりました。BoundFieldにデータを入れる箇所はわかるのですが、TemplateFieldにデータを入れる箇所がどうしても、分かりません・・。
これを解決した上で、tasokarewaさんから教えていただいたANo.3の方法を試せばいいのでは・・とは思うのですが。
もし、よろしければ、何かヒントだけでも頂けないでしょうか?
--------------------------------
'Dim bf As BoundField = New BoundField
Dim bf As TemplateField = New TemplateField
For r = 0 To dTbl.Columns.Count - 1
'bf = New BoundField
bf = New TemplateField
bf.HeaderText = dTbl.Columns(r).Caption
'bf.DataField = dTbl.Columns(r).ColumnName
('↑のデータをテンプレートフィールドに入れる箇所が分かりません)
Me.GridView1.Columns.Add(bf)
Next
--------------------------------
No.4
- 回答日時:
ANo3です。
> 追加ですが、DataGridからGridViewに変更しました・・。
VS2005だったのですね。
頂いたサンプルのようにコードでTemplateFieldとDataColumnをマッピングさせることはできません(不可能ではありませんが、やめておいたほうがよいです)。TemplateFieldはデザイナを使用されるほうがよいです。
CheckBox や HyperLink でよいのであれば、それぞれ、CheckBoxField・HyperLinkFieldが用意されております。
それらのクラスはBoundFieldを継承しておりますので、
BoundFieldと同じように使用できます。
それ以外では、GridViewを使用されるとのことですので、
列を追加した上で、RowDataBoundイベントかDataBoundイベント
もしくはバインド後に、
DataRowから値を取得・表示されるのがよいです。
丁寧なご教授ありがとうございます。
ANo.3を引用させて頂き、先ほどなんとかそれっぽいものを作成することができました。
>頂いたサンプルのようにコードでTemplateFieldとDataColumnをマッピングさせることはできません(不可能ではありませんが、やめておいたほうがよいです)。TemplateFieldはデザイナを使用されるほうがよいです。
今までかなりごちゃごちゃ試しましたが、上記の言葉で諦めが付き、他の方法で作成することができました。(※いろんなサンプルコードを見ていると、DataGridが多いので、なんで自分の(VS2005)には付いてないんだろうと思いつつも、無理やりDataGridを使っていました。ものすごくやりづらかったです・・)
本当にありがとうございました!!!
No.2
- 回答日時:
DataGridのテンプレートを使用します。
デザイナを使用して下さい。
例えば、項目にテキストボックスなどを表示させたいときは、
「ItemTemplate」を使用するのと同じように、
ヘッダーにハイパーリンクを表示させたいときは、
「HeaderTemplate」を使用します。
この回答への補足
できました!そうです。これです。やりたかったのは・・・。
ありがとうございます。
ただ、なに分Columnsを自動で作成しているので、aspx.vbでの記述法が知りたいです。
Me.DataGrid1.Columns.xxxxx(←ココが不明)のようになるのではと思いますが・・。
もし、ご存知でしたら、教えていただけないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
VBAコンボボックスで選択した値...
-
vba 2つの条件が一致したら...
-
エクセルでフォームのチェック...
-
セルに入力すると隣のセルに日...
-
Excel2010 VBAでスペース区切り
-
VBAを使って検索したセルをコピ...
-
IIF関数の使い方
-
マクロについて。S列の途中から...
-
■VBAで条件による行挿入方法
-
オートフィルタをマクロで作成...
-
Excelで、あるセルの値に応じて...
-
グリッドの列の最大値を求めたい。
-
vba 重複データ合算
-
Changeイベントでの複数セルの...
-
VBAを用いて条件付きの平均値、...
-
エクセルマクロにて条件比較後...
-
VBA 値と一致した行の一部の列...
-
VBAでエラーインジケーターにつ...
-
Excel VBA でテキストボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
マクロ 最終列をコピーして最終...
-
VBAを使って検索したセルをコピ...
-
データグリッドビューの一番最...
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
【VBA】2つのシートの値を比較...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
Excel(M365) Vlookup/セル反転(...
-
VBA指定行削除
-
VBAでのリスト不一致抽出について
-
C# dataGridViewの値だけクリア
-
Changeイベントでの複数セルの...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
おすすめ情報