如果在dataGridView中新增一個"序號"欄位,如何讓此欄位值自動編號?

要在dataGrudView中新增Seq欄位並自動編號如下圖,在此列出三種方式,可依照各自的情境擇一使用 :








可將自動編號邏輯加在dataGridView的以下事件中:(擇一使用) 

  1. CellFormatting 事件
  2. RowPostPaint 事件
  3. RowsAdded 事件

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. CellFormatting 事件

  • 此事件在設定要顯示之儲存格內容的格式時發生。
  • CellFormatting 事件用來設定dataGridView的自訂格式,如顯示值的樣式儲存格樣式,例如背景和前景色彩。
  • 每次 CellFormatting 繪製儲存格時都會發生此事件,要避免在處理此事件時進行冗長的處理,否則會影響UI的速度。
  • 將自動編號邏輯加在此事件中,如下:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 0)
        e.Value = e.RowIndex + 1;        
}


2. RowPostPaint 事件

  • 此事件發生於發生在繪製 DataGridViewRow 之後。
  • 將自動編號邏輯加在此事件中,如下:

private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{             
    if ((dataGridView1.Rows[e.RowIndex].Cells["your Seq Column name"].Value).ToString() == "")
        dataGridView1.Rows[e.RowIndex].Cells["Your Seq Column name"].Value = e.RowIndex + 1;
    else
        return;             
}

3. RowsAdded 事件
  • 發生於新的資料列加入 DataGridView 之後。
  • 將自動編號邏輯加在此事件中,如下:
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) 
{ 
        for (int i = 0; i < dataGridView1.Rows.Count; i++) 
        { 
                 dataGridView1.Rows[i].Cells["your Seq Column name"].Value = i + 1;
} }

沒有留言:

張貼留言

>