DataGridViewColumn HeaderText在动态添加列时未显示和消失

时间:2016-03-15 13:57:03

标签: c# winforms

代码:

private void Do_FillGrid() {
    DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
    Data_Grid1.ColumnCount = 5;
    Data_Grid1.ColumnHeadersVisible = true;
    try
    {
        Cols.Add("Col_xID", "p_ID");
        Cols.Add("Col_Unit", "p_Unit");
        Cols.Add("Col_Date", "p_Date");

        Cols.Add("Col_ValStr", "p_Value");
        Cols.Add("Col_Status", "p_Status");
    }catch(Exception ex){
        Console.WriteLine(ex.Message);
    }
    foreach (SimpleEdnaTag oneTag in MyTags)
    {
        Data_Grid1.Rows.Add(
            oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
    }
}

Missing HeaderText on my Columns

我的列标题无法显示在上面是否有任何原因或任何原因?

6 个答案:

答案 0 :(得分:1)

这不是向网格添加列的方法。在您的代码中,向网格添加列的命令是:Data_Grid1.ColumnCount = 5;,而try/catch块中的代码只生成异常而不会执行。

要向网格添加列,您可以使用:

this.dataGridView1.Columns.Add("columnName", "headerText")

此外,您应该知道可以将列表设置为网格的DataSource

this.dataGridView1.AutoGenerateColumns = true;
this.dataGridView1.DataSource= myList;

这样您就不需要逐个添加行或列。

答案 1 :(得分:1)

不确定为什么要使用DatagridViewColumnCollection。

尝试这个。

            Data_Grid1.Columns.Add("Col_xID", "p_ID");
            ...

答案 2 :(得分:0)

您是否尝试在InitializeComponent方法/设计器代码中为您的控件设置ColumnHeadersVisible = true?

Data_Grid1.ColumnHeadersVisible = true;

如果这不起作用,请尝试在行完成后刷新控件并将ColumnHeadersVisible属性设置为true。

Data_Grid1.Refresh();

答案 3 :(得分:0)

您可以这样设置Colums Header:

Data_Grid1.ColumnHeadersVisible = true;
Data_Grid1.ColumnCount = 5;

Data_Grid1.Columns[0].HeaderText = "p_ID";
Data_Grid1.Columns[1].HeaderText = "p_Unit";
Data_Grid1.Columns[2].HeaderText = "p_Date";
Data_Grid1.Columns[3].HeaderText = "p_Value";
Data_Grid1.Columns[4].HeaderText = "p_Status";

答案 4 :(得分:0)

谢谢你们。我稍微重新安排了我的代码。现在很好 - >

private void Do_FillGrid() {
    DataGridViewColumnCollection theCols = Data_Grid1.Columns;
    try
    {
        theCols.Add("Col_xID", "p_ID");
        theCols.Add("Col_Unit", "p_Unit");
        theCols.Add("Col_Date", "p_Date");
        theCols.Add("Col_ValStr", "p_ValStr");
        theCols.Add("Col_Status", "p_Status");
    }catch(Exception ex){
        Console.WriteLine(ex.Message);
    }
    foreach (SimpleEdnaTag oneTag in MyTags) {
        Data_Grid1.Rows.Add(
            oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
    }
}

header OK

答案 5 :(得分:0)

outThx再次Kon。使用Reza就像你说的那样,我应用Linq来选择要输出的字段。

select uid, firstName, lastName, AmountFromTagetedRow, DateFromTargetedRow,
from users u inner join 
     sales s on u.uid = s.custID
group by uid, firstName, lastName
order by uid

header OK2