17

我正在尝试创建 aDataTable并将其绑定到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房产的用途。但是,这并不意味着控件制作者必须使用标题属性。在这种情况下,微软没有这样做(尽管他们确实应该这样做)。您可以将代码修改为此:

///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

@aquinas,这对我有用

foreach (DataGridViewColumn col in dataGridView1.Columns) {
  col.HeaderText = dt.Columns[col.Name].Caption;
}
于 2016-02-25T17:45:59.843 回答
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
            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 回答