(.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はプロパティが膨大過ぎてなかなか覚えれませんね。