Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在datagridview,C#中向行标题添加文本?_C#_.net_Winforms_Datagridview_Row - Fatal编程技术网

如何在datagridview,C#中向行标题添加文本?

如何在datagridview,C#中向行标题添加文本?,c#,.net,winforms,datagridview,row,C#,.net,Winforms,Datagridview,Row,这里有很多关于这个问题的问题,但我已经尝试了发布的解决方案,但仍然无法让它发挥作用 我有一个datagridview,我想在其中显示行标题上的行号。 这就是我尝试过的: gridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders; gridView.AutoResizeRo

这里有很多关于这个问题的问题,但我已经尝试了发布的解决方案,但仍然无法让它发挥作用

我有一个datagridview,我想在其中显示行标题上的行号。 这就是我尝试过的:

 gridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders;           
            gridView.AutoResizeRowHeadersWidth(
                DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);


            foreach (DataGridViewRow row in gridView.Rows)
            {
                row.HeaderCell.Value = (row.Index + 1).ToString();
            }
这段代码是从OnLoad事件调用的,因为在其他问题中,它声明代码不应该在构造函数中运行


建议?谢谢

我认为我的方法是在ItemDataBound事件上绑定一行,而不是在一个地方遍历所有行。大致如下:

    /// <summary>
    /// Which row is currently being rendered
    /// </summary>
    protected int RowIndex { get; set; }

    protected override void OnLoad(EventArgs e)
    {      
      this.RowIndex = 0;
      this.DataGrid.DataSource = new string[] { "a", "b", "c" }; // bind the contents
      this.DataGrid.DataBind();      
    }

    /// <summary>
    /// When an item is bound
    /// </summary>
    protected void OnItemDataBound(object sender, DataGridItemEventArgs e)
    {
      this.RowIndex++;
      Label label = e.Item.FindControl("RowLabel") as Label;
      if (label != null)
      {
        label.Text = this.RowIndex.ToString();
      }
    }
//
///当前正在呈现哪一行
/// 
受保护的整数行索引{get;set;}
受保护的覆盖无效加载(事件参数e)
{      
this.RowIndex=0;
this.DataGrid.DataSource=新字符串[]{“a”、“b”、“c”};//绑定内容
this.DataGrid.DataBind();
}
/// 
///当项目被绑定时
/// 
受保护的无效数据绑定(对象发送方、DataGridItemEventArgs e)
{
这个.RowIndex++;
Label Label=e.Item.FindControl(“RowLabel”)作为标签;
如果(标签!=null)
{
label.Text=this.RowIndex.ToString();
}
}

使用网格视图,您可以在OnRowDataBound事件中检测是否为标题行,如下所示:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.Header)
            {
                Label label = e.Row.FindControl("RowLabel") as Label;
               label.Text = "the text i want";
            }
        }
当网格数据绑定时触发此事件。它将为绑定的每一行数据以及页眉和页脚行触发


因此,您很可能会在Page_Load事件期间调用DataGridView1.Databind(),这将多次触发OnRowDataBound事件。

谢谢!我最后这样做了:代码段void dataGridView1_CellFormatting(对象发送者,DataGridViewCellFormattingEventArgs e){this.dataGridView1.Rows[e.RowIndex].HeaderCell.Value=e.RowIndex.ToString();}