![](/img/trans.png)
[英]Can I display number of row on RowHeaders in the DataGridView?
[英]How can I add text to my rowheaders in a datagridview, C#?
这里有很多与此问题有关的问题,但是我尝试过发布的解决方案,但仍然无法正常工作。
我有一个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();
}
}
使用网格视图,您可以在OnRowDataBound事件中检测到这是否是Header行,如下所示:
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事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.