2012-02-29 12 views
1

ここにこの問題に関する多くの質問がありますが、私は解決策を投稿しようとしましたが、それでも問題はありません。DataGridviewのC#の行ヘッダーにテキストを追加するにはどうすればよいですか?

ローヘッダーにrownumberを表示する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イベントから呼び出されます。

アドバイス?ありがとう!

答えて

0

私のアプローチは、行をすべて単一の場所に移動するのではなく、ItemDataBoundイベントの行をバインドすることだと思います。

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:これがそうのようなヘッダ行である場合は、OnRowDataBoundイベントで検出することができますグリッドビューを使用して

/// <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

THanks!コードスニペット void dataGridView1_CellFormatting(オブジェクト送信者、DataGridViewCellFormattingEventArgs e) { this.dataGridView1.Rows [e.RowIndex] .HeaderCell.Value = e.RowIndex.ToString(); } – kakka47

0

:の線に沿って何か。バインドされているすべてのデータ行と、ヘッダーとフッターの行ごとに起動します。

したがって、おそらくPage_Loadイベント中にDataGridView1.Databind()を呼び出すと、OnRowDataBoundイベントが複数回トリガーされます。

+0

ご協力いただきありがとうございます。 – kakka47