ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

C# DataGridViewの列の値に0から始まる番号を入力する

DataGridViewに「No」という列があったとして、

 

// 行数をカウント
int count = RowsCount();

// Noを振り直す
for (int i = 0; i < count; i++)
{
    dgv[0, i].Value = i;
}


とか、もしくは‥

// Noを振り直す
int i = 0;
foreach (ar item in dgv.Rows)
{
    dgv[0, i].Value = i;
    i++
}


とかで可能な訳ですが、これはあくまでDataGridVIew上の並び順で値を0から入力していきます。

例えば列ヘッダーをクリックして昇順ソートした状態で実行すると、ソートされた並び順で番号が入力されていってしまいます。

つまり、内部データである DataTable での並び順と一致しなくなってしまいます。

なので DataTableの行情報にアクセスして値を書き替えてあげる必要があります。

このような感じ。

// Noを振り直す
int i = 0;

foreach (DataRow r in taskDataSet.taskDataTable.Rows)
{
    r["No"] = i;
    i++;
}


といった感じで実行することで、うまくいきました。