【问题标题】:Cannot set DataGrid row header value无法设置 DataGrid 行标题值
【发布时间】:2013-08-05 06:43:21
【问题描述】:

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

注意:RowHeadersVisible = True

(假设我的 DataTable 在到达此代码之前至少有 1 列和 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 数据表

作为类属性。

    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

谢谢。

【问题讨论】:

  • 试试dataGridView_replaceTable.Columns[0].Name = "ROW HEADER 1";

标签: c# forms datagrid


【解决方案1】:

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

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

【讨论】:

  • 不确定这是否是我想要实现的。我正在添加一张图片来说明它..(我也试过你的代码,没有任何改变)
  • @etaiso 我在等图片:)
  • 不幸的是,据我所知,使用普通的 GridView 属性无法完成您想做的事情。顺便说一句,这不叫 Header 我自己叫这些 Sider :)。我改为使用自定义用户控件进行网格。我添加了这个“Sider”,它也有一些更好的样式,但也有一些限制。您也可以通过使用一些低级消息“入侵”GridView 来做到这一点。
  • 对不起,我把它添加到主线程但忘了把它放在这里。你去吧:i40.tinypic.com/2wq8hvp.png
  • 是否有其他对象表现得像一个表/矩阵有更多这样的选项?我还希望通过选择它并按常规 CTRL+C 快捷方式来复制特定列的选项。现在它不会复制任何数据,除非您双击特定单元格然后文本变为可编辑..
【解决方案2】:
grid.Columns[0].HeaderText = "Something special";

添加列的基本方法是:

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

【讨论】:

  • 您想要现有列的标题还是要为列设置标题?
  • 我想要行的标题/标题。如上图所示。
猜你喜欢
  • 2012-01-25
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 2012-02-02
相关资源
最近更新 更多