2010年12月4日土曜日

DataGridViewとパフォーマンス

DataGridViewに情報をセットするときに次のような感じでごりごりやってました。

// 見出しをdatagridviewに入力
foreach (string str in Columns)
{
    dataGridView1.Columns.Add(str, str);
}

// 中身を入力 (行を繰り返し入力していく。)
int nColmn = 0;
Dictionary dict;
dict = cdate.GetData();
foreach (string key in dict.Keys)
{
    // 文字列をgridviewに登録。
    string[] strtmp = new string[dict[key].Length];
    for ( int i = 0; i < dict[key].Length; i++)
    {
        strtmp[i] = dict[key][i].str;
    }
    dataGridView1.Rows.Add(strtmp);
}


ですが、データの行数が2万ぐらいになったら、めちゃくちゃおそくなってしまい。。。
なので、DataTableにデータをつくっておいて、その後DataGridViewのDatasourceとして
登録するようにしたらだいぶよくなりました。

// 見出しをdatagridviewに入力 
DataTable dt = new DataTable();
foreach (string str in Columns)
{
    dt.Columns.Add(str, str.GetType());
}

// 中身を入力 (行を繰り返し入力していく。)
int nColmn = 0;
Dictionary dict;
dict = cdate.GetData();
foreach (string key in dict.Keys)
{
    // 文字列をgridviewに登録。 
    string[] strtmp = new string[dict[key].Length];
    for (int i = 0; i < dict[key].Length; i++)
    {
        strtmp[i] = dict[key][i].str;
    }
    dt.Rows.Add(strtmp);
}
dataGridView1.DataSource = dt;

0 件のコメント:
コメントを投稿