以下のように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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
asp.netにてgridviewの列を動的にボタンやチェックボックスを追加して実装したいのですが具
Microsoft ASP
-
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
ASP.NET TextBox 入力制限
Microsoft ASP
-
-
4
DBからPDFを取得して別画面で表示したい
Microsoft ASP
-
5
SQL server改行コード
SQL Server
-
6
GridViewの行選択イベントを発生させるには?
JavaScript
-
7
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba 2つの条件が一致したら...
-
エクセルVBAにて =A1=B1とすれ...
-
B列の最終行までA列をオート...
-
VBマクロ 色の付いたセルを...
-
VBAで、離れた複数の列に対して...
-
awkの$NR
-
Excelで、あるセルの値に応じて...
-
VBAにおけるRank関数について
-
VBAで最新のデータを別シートに...
-
Worksheets メソッドは失敗しま...
-
エクセルVBA intersect colu...
-
ExcelのVBAで下線部分の取得・...
-
AdvancedFilterについての質問
-
DataGridViewにリンク列の追加...
-
C# dataGridViewの値だけクリア
-
A列にある値をB列・C列にVBAで...
-
rowsとcolsの意味
-
空白セルをとばして転記
-
複数の列の値を結合して別の列...
-
VBAで条件から範囲を指定して色...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
VBA 何かしら文字が入っていたら
-
Changeイベントでの複数セルの...
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報