Показывать индекс строки в ячейках столбца в DataGridView

Мне нужно показать значение автоинкремента в ячейках столбца в DataGridView, Тип столбца DataGridViewLinkColumn и сетка должна быть такой:

| Column X | Column Y |
-----------------------
|    1     | ........ |
|    2     | ........ |
| ........ | ........ |
|    n     | ........ |

Я пробовал эти коды, но это не работает:

int i = 1;
foreach (DataGridViewLinkColumn row in dataGridView.Columns)
{                
    row.Text = i.ToString();
    i++;
}

Кто-нибудь может мне помочь?

1 ответ

Решение

Вы можете справиться CellFormatting событие вашего DataGridView а затем укажите значение для ячейки:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.RowIndex < 0 || e.RowIndex == this.dataGridView1.NewRowIndex)
        return;

    //Check if the event is fired for your specific column
    //I suppose LinkColumn is name of your link column
    //You can use e.ColumnIndex == 0 for example, if your link column is first column
    if (e.ColumnIndex == this.dataGridView1.Columns["LinkColumn"].Index)
    {
        e.Value = e.RowIndex + 1;
    }
}

Лучше не использовать простой for или же foreach цикл, потому что если вы сортируете сетку, используя другой столбец, порядок чисел в этом столбце будет неупорядоченным.

Другие вопросы по тегам