電子書籍の厳選無料作品が豊富!

datagridviewのデータバインドについて教えてください.

今,下記のプログラム(一部)を組んで処理を行おうとしていますがうまくいかないため
何が悪いのか教えて頂けないでしょうか?
今datagridviewをデータテーブルにバインドしています.

for (j = t; j < R - 1; j++)
{
object Ti = this.dataGridView1.Rows[j].Cells[0].Value;
object Tibf = this.dataGridView1.Rows[j + 1].Cells[0].Value;
string TiS = Convert.ToString(Ti);
string TiSbf = Convert.ToString(Tibf);
# region

// シリアル値化
long serial = DateTime.Parse(TiS).ToBinary();
long serialbf = DateTime.Parse(TiSbf).ToBinary();
long parsesum = serial + Oneparse;


if (serialbf != parsesum)
{
dataGridView1.Rows.Insert(j + 1, 1);
// シリアル値から復元
DateTime dtm = DateTime.FromBinary(parsesum);
string s = Convert.ToString(dtm);
// 指定した書式で日付を文字列に変換する
string stPrompt1 = dtm.ToString("yyyy/M/d H:mm");
this.dataGridView1.Rows[j + 1].Cells[0].Value = stPrompt1;
}
}

簡単に言うと,行を追加したいのですが,forの前でデータソースをnullにすると
object Ti = this.dataGridView1.Rows[j].Cells[0].Value;でエラー

if (serialbf != parsesum)の後にすると
dataGridView1.Rows.Insert(j + 1, 1);でエラー

が起こります.どちらの場合も下記のエラーが出ます.
インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
パラメーター名: index

本当に困っています.

よろしくお願いいたします.

A 回答 (2件)

dataGridView1.DataSource = dt;


って感じで設定している…ということでしょうか?

DataTable側に行を追加…だったかなぁ?
# 最近、その辺り触ったけど…ソースは仕事場だしねぇ。
# 来週は夏期休暇だし。
    • good
    • 0

this.dataGridView1.DataSource に null を設定すると this.dataGridView1.Rows.Count の値が変わると思うのですが。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!