web-dev-qa-db-ja.com

DataColumn.Captionが機能しないのはなぜですか?

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;
14
Alex P.

そうですね、MSDNは正しいです。それがCaptionプロパティの目的です。ただし、これは、コントロールメーカーがcaptionプロパティを使用する必要があるという意味ではありません。この場合、Microsoftはそれをしませんでした(彼らは本当にそうすべきでしたが)。ただし、コードを次のように変更できます。

///snip

dataGridView1.DataSource = dt;

foreach (DataGridViewColumn col in dataGridView1.Columns) {
  col.HeaderText = dt.Columns[col.HeaderText].Caption;
}
24
aquinas

DataTableにバインドするとき、DataGridViewはCaptionプロパティを使用しないと思います。 DataSetにバインドする場合にのみ機能します。

次のように、列ヘッダーを手動で変更できます。

dataGridView.Columns[i].HeaderText = dt.Columns[i].Caption;
4
Nick Bray

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
1
s.h yadegari

これを試してみてください:

datagridView.Columns[0].HeaderText = "Title Goes Here.";

追加した列の数に対してこれを行うことができます。インデックスのみが変更されます。

1
TriumphTruth

@aquinas、これは私のために働く

foreach (DataGridViewColumn col in dataGridView1.Columns) {
  col.HeaderText = dt.Columns[col.Name].Caption;
}
0
P.A. SOW