我正在尝试创建DataTable
并将其绑定到DataGridView
。它可以工作,但我不能通过Caption
属性设置列标题。它使用ColumnName
(“城市”)显示标题。 MSDN说
“您可以使用标题属性显示描述性或友好性 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;
答案 0 :(得分:24)
嗯,MSDN是对的。这就是Caption
属性的用途。但是,这并不意味着控制制造商必须使用标题属性。在这种情况下,微软没有这样做(虽然他们真的应该这样做)。您可以将代码修改为:
///snip
dataGridView1.DataSource = dt;
foreach (DataGridViewColumn col in dataGridView1.Columns) {
col.HeaderText = dt.Columns[col.HeaderText].Caption;
}
答案 1 :(得分:4)
我认为当您绑定到DataTable时,DataGridView不使用Caption属性。它仅在绑定到DataSet时有效。
您可以像这样手动修改列标题:
dataGridView.Columns[i].HeaderText = dt.Columns[i].Caption;
答案 2 :(得分:1)
你应该试试这个:
datagridView.Columns[0].HeaderText = "Title Goes Here.";
您可以针对已添加的列数执行此操作。只有指数会改变。
答案 3 :(得分: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
答案 4 :(得分:0)
@ aquinas,这对我有用
foreach (DataGridViewColumn col in dataGridView1.Columns) {
col.HeaderText = dt.Columns[col.Name].Caption;
}
答案 5 :(得分:-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);
}