2012-02-29 104 views
1

在這裏有很多關於這個問題的問題,但我已經嘗試過發佈的解決方案,但仍然沒有得到它的工作。如何將文本添加到我在DataGridview中的rowheaders,C#中?

我有一個datagridview,我想在行標題上顯示rownumber。 這是我曾嘗試:

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事件稱爲,因爲在其他問題中指出,代碼不應該是在構造函數中運行。

建議?謝謝!

回答

0

我認爲我的方法是綁定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(); 
     } 
    } 
+0

謝謝!我結束了這樣做:代碼片段 void dataGridView1_CellFormatting(object sender,DataGridViewCellFormattingEventArgs e) { this.dataGridView1.Rows [e.RowIndex] .HeaderCell.Value = e.RowIndex.ToString(); } – kakka47 2012-02-29 14:41:02

0

使用,你可以在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"; 
      } 
     } 

此事件在電網databinds。它會觸發綁定的每一行數據以及頁眉和頁腳行。

因此,您最有可能在Page_Load事件期間調用DataGridView1.Databind(),這會多次觸發OnRowDataBound事件。

+0

感謝您的幫助! – kakka47 2012-02-29 14:46:48

相關問題