簡體   English   中英

如何在C#的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM