无法设置DataGrid行标头值

时间:2013-08-05 06:43:22

标签: c# forms datagrid

我在设置DataGrid行的标头值时遇到了困难。 我的DataGrid受DataTable 限制,但以下代码不会显示第一行的行标题。有什么想法吗?

注意:RowHeadersVisible = True

(假设我的DataTable在到达此代码之前至少有1个col和1行)

    public new void ShowDialog()
    {
        dataGridView_replaceTable.Columns.Clear();
        dataGridView_replaceTable.Rows.Clear();

        dataGridView_replaceTable.DataSource = getDataTable(); <-- returns DataTable

        dataGridView_replaceTable.Rows[0].HeaderCell.Value = "ROW HEADER 1";
        // I expect to see the this string in the first row header - but it remians empty!
    }

向DataTable添加行和列的代码:

我们有:

  

replaceTableValues DataTable

作为类属性。

    public void addCol()
    {
        DataColumn column;

        column = new DataColumn(string colName);
        column.DataType = System.Type.GetType("System.String");
        column.ColumnName = colName;
        column.ReadOnly = false;
        replaceTableValues.Columns.Add(column);
    }

    public void addRow()
    {
        DataRow row;

        row = replaceTableValues.NewRow();

        string[] arr = new string[numOfCols+1];
        for (int i = 0; i < arr.Length; i++)
        {
            arr[i] = ""; // fill row data as empty string
        }

        try
        {
            replaceTableValues.Rows.Add(arr);
        }
        catch (System.Exception ex)
        {
            updateReplaceVarErrorMsg(TABLE_EXCEPTION);
        }

    }

我想要实现的目标:(红色文字) Image

感谢。

2 个答案:

答案 0 :(得分:0)

您应该使用HeaderText集合的Columns属性:

dataGridView_replaceTable.Columns[0].HeaderText="ROW HEADER 1";

使用Caption属性添加列时,也可以执行此操作:

public void addCol()
{
    DataColumn column;

    column = new DataColumn(string colName);
    column.DataType = System.Type.GetType("System.String");
    column.ColumnName = colName;
    column.Caption = "My header" // ASSIGN HEADERS HERE
    column.ReadOnly = false;
    replaceTableValues.Columns.Add(column);
}

答案 1 :(得分:0)

grid.Columns[0].HeaderText = "Something special";

添加列的基本方法是:

int columnIndex = grid.Columns.Add("columnName", "Header Text");