3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(.Net)DataGridViewでリンク列の値とDataSourceの列の値を対応させる方法

したいこと:DataTableの"Mail"列の値をDataGridViewのリンク列(DataGridViewLinkColumn)で表示したい。

最初は、ループでリンクセルの Value プロパティに値を入れてたのですが、それだと値が表示されませんでした。

で、いろいろMSDN徘徊してるうちによーやく目的のことができるプロパティ見つけました。
DataGridViewColumn.DataPropertyNameプロパティです。
こいつの値にデータソースとなっているDataTableの"Mail"列の名前を指定することでできました。

いちおうサンプルソースです。
DataTableはすでに作成済で、DataTableの"Mail"列にDataGridViewのリンクセルに表示したい文字列が入ってるとします。

'DataGridView上の各種設定 (dtblは DataTable オブジェクト )
frmDataExt.dgvExtract.DataSource = dtbl
'奇数行の背景を変更
frmDataExt.dgvExtract.AlternatingRowsDefaultCellStyle.BackColor = Color.PeachPuff

'列の自動順番を解除
frmDataExt.dgvExtract.AutoGenerateColumns = False
 
'メールリンク列作成
Dim clmMail As New DataGridViewLinkColumn()

clmMail.Name = "メール"
'リンク押下後の色指定
clmMail.VisitedLinkColor = Color.DeepPink
'DataSoureに設定したDataTableのどの列の値をこの列の値として使用するか設定
clmMail.DataPropertyName = dtbl.Columns("Mail").ColumnName

'DataDridViewに列追加
frmDataExt.dgvExtract.Columns.Add(clmMail)

このプロパティの詳細はMSDN参照のこと。

このプロパティはSystem.Windows.Forms.DataGridViewColumnにあるので、それを継承している他のDataGirdViewでの列(DataGridViewButtonColumn , DataGridViewCheckBoxColumn , DataGridViewComboBoxColumn , DataGridViewImageColumn , DataGridViewTextBoxColumn)でもおそらく使えると思われます。

.Netはプロパティが膨大過ぎてなかなか覚えれませんね。