Why DataColumn.Caption doesn't work?

前端 未结 6 605
夕颜
夕颜 2020-12-10 12:28

I am trying to create a DataTable and bind it to a DataGridView. It works, but I can\'t set columns headers via the Caption property.

相关标签:
6条回答
  • 2020-12-10 13:03

    You should try this:

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

    You may do this for the number of columns you have added. Only the index will change.

    0 讨论(0)
  • 2020-12-10 13:05

    @aquinas, this works for me

    foreach (DataGridViewColumn col in dataGridView1.Columns) {
      col.HeaderText = dt.Columns[col.Name].Caption;
    }
    
    0 讨论(0)
  • 2020-12-10 13:06

    in vb.net code :

    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
    
    0 讨论(0)
  • 2020-12-10 13:07

    Well, MSDN is right. That is what the Caption property is for. However, that doesn't mean that control makers have to use the caption property. In this case, Microsoft didn't do that (although they really should have). You can modify your code to this though:

    ///snip
    
    dataGridView1.DataSource = dt;
    
    foreach (DataGridViewColumn col in dataGridView1.Columns) {
      col.HeaderText = dt.Columns[col.HeaderText].Caption;
    }
    
    0 讨论(0)
  • 2020-12-10 13:12

    I think when you bind to a DataTable, the DataGridView does not use the Caption property. It only works when you bind to a DataSet.

    You can modify the column headers manually like this:

    dataGridView.Columns[i].HeaderText = dt.Columns[i].Caption;
    
    0 讨论(0)
  • 2020-12-10 13:15
                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);
            }
    
    0 讨论(0)
提交回复
热议问题