17

を作成して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;
4

6 に答える 6

31

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

///snip

dataGridView1.DataSource = dt;

foreach (DataGridViewColumn col in dataGridView1.Columns) {
  col.HeaderText = dt.Columns[col.HeaderText].Caption;
}
于 2013-01-10T21:30:39.303 に答える
4

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

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

dataGridView.Columns[i].HeaderText = dt.Columns[i].Caption;
于 2013-01-10T21:28:15.717 に答える
1

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

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

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

于 2013-01-10T21:29:08.077 に答える
1

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
于 2016-02-02T08:16:16.813 に答える
1

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

foreach (DataGridViewColumn col in dataGridView1.Columns) {
  col.HeaderText = dt.Columns[col.Name].Caption;
}
于 2016-02-25T17:45:59.843 に答える
-1
            foreach (DataTable dataTable in dataSet.Tables)
        {
            form1.Controls.Add(new LiteralControl(String.Format("<h1>{0}</h1>", dataTable.TableName)));
            GridView grid = new GridView();
            grid.AllowPaging = false;
            grid.AutoGenerateColumns = false;

            foreach (DataColumn col in dataTable.Columns)
            {
                grid.Columns.Add(new BoundField { DataField = col.ColumnName, HeaderText = col.Caption });
            }

            grid.DataSource = dataTable;
            grid.DataBind();

            form1.Controls.Add(grid);
        }
于 2016-05-31T20:39:38.033 に答える