DataTable
を作成し、それをDataGridView
にバインドしようとしています。動作しますが、Caption
プロパティを介して列ヘッダーを設定できません。代わりにColumnName
( "City")を使用してヘッダーを表示します。 [〜#〜] msdn [〜#〜] は
「Captionプロパティを使用して、DataColumnのわかりやすい名前またはわかりやすい名前を表示できます。」
これが私のコードです:
DataColumn dc = new DataColumn("City", typeof(string));
dc.Caption = "Город";
DataTable dt = new DataTable();
dt.Columns.Add(dc);
DataRow row = dt.NewRow();
row["City"] = "Moscow";
dt.Rows.Add(row);
datagridview.DataSource = dt;
そうですね、MSDNは正しいです。それがCaption
プロパティの目的です。ただし、これは、コントロールメーカーがcaptionプロパティを使用する必要があるという意味ではありません。この場合、Microsoftはそれをしませんでした(彼らは本当にそうすべきでしたが)。ただし、コードを次のように変更できます。
///snip
dataGridView1.DataSource = dt;
foreach (DataGridViewColumn col in dataGridView1.Columns) {
col.HeaderText = dt.Columns[col.HeaderText].Caption;
}
DataTableにバインドするとき、DataGridViewはCaptionプロパティを使用しないと思います。 DataSetにバインドする場合にのみ機能します。
次のように、列ヘッダーを手動で変更できます。
dataGridView.Columns[i].HeaderText = dt.Columns[i].Caption;
vb.netコードで:
Dim dt As New DataTable
dt.Columns.Add("col1").Caption = "Your Header Text"
'and add more columns with .caption
GridView1.DataSource = dt
For Each col As DataColumn In dt.Columns
GridView1.Columns(col.ColumnName).HeaderText = col.Caption
Next
これを試してみてください:
datagridView.Columns[0].HeaderText = "Title Goes Here.";
追加した列の数に対してこれを行うことができます。インデックスのみが変更されます。
@aquinas、これは私のために働く
foreach (DataGridViewColumn col in dataGridView1.Columns) {
col.HeaderText = dt.Columns[col.Name].Caption;
}