为什么DataColumn.Caption不起作用?(Why DataColumn.Caption

2019-07-18 02:12发布

我想创建一个DataTable ,并将其绑定到DataGridView 。 它的工作原理,但我无法通过设置列标题Caption属性。 它显示使用标题ColumnName (“城市”)来代替。 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;

Answer 1:

那么,MSDN是正确的。 这是什么Caption属性是。 然而,这并不意味着控制厂商必须使用标题属性。 在这种情况下,微软并没有做到这一点(虽然他们确实应该有)。 您可以修改代码以这虽然:

///snip

dataGridView1.DataSource = dt;

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


Answer 2:

我认为当你绑定到一个DataTable,DataGridView中不使用Caption属性。 只有当你绑定到DataSet的作品。

您可以手动修改列标题是这样的:

dataGridView.Columns[i].HeaderText = dt.Columns[i].Caption;


Answer 3:

你应该试试这个:

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

您可以为您添加的列数做到这一点。 只有指数将改变。



Answer 4:

在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


Answer 5:

@aquinas,这对我的作品

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


Answer 6:

            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);
        }


文章来源: Why DataColumn.Caption doesn't work?