DOBON.NET DOBON.NETプログラミング掲示板過去ログ

配列をdataTableに格納し、DataGridViewに表示

環境/言語:[VS C# 2010 Express]
分類:[.NET]

よろしくお願いします。
以前質問したこととまったく同じ内容なのですが、こちらのプログラム内で計算し、取得した配列をdatatableに格納し、フォーム上のdatagridviewに表示したいのですが、うまくいきません。

計算結果が配列に正しく格納されているのはデバッグにより確認済みなのですが、その配列を直接datagridviewのDataMemberに代入すると、データはバインドされているのに、フォーム上で表示されません。

また、配列を一度datatableに格納し、datatableをDataMemberにしようと思い、

//データセットの作成
            DataSet dataset_sam = new DataSet();
            //データセットにテーブルを加える
            dataset_sam.Tables.Add("sample");
            //ストリームリーダーの作成
            System.IO.StreamReader StreamReader = new System.IO.StreamReader(filename, System.Text.Encoding.GetEncoding(932), false, 512);
            //文字列を取得する変数の作成
            string[] stringBuffer;
            //カンマで区切られた範囲を文字列配列に格納
            stringBuffer = StreamReader.ReadLine().Split(',');
            //対象ファイルの1行目をヘッダーテキストに加える
            foreach (string s in stringBuffer)
            {
                dataset_sam.Tables["sample"].Columns.Add(s);
            }
            foreach (DataGridViewColumn c in dataGridView1.Columns)
            {
                c.SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            //対象ファイルの内容を読み取り、データテーブルに格納
            while (StreamReader.Peek() != -1)
            {
                stringBuffer = StreamReader.ReadLine().Split(',');
                try
                {
                    //DataSetの作成 
                    DataRow row = dataset_sam.Tables["sample"].NewRow();
                    for (int counter = 0; counter < row.ItemArray.Length; counter++)
                    {
                        row[counter] = stringBuffer[counter];
                    }
                    dataset_sam.Tables["sample"].Rows.Add(row);
                }
                    //例外処理
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message,"エラー", MessageBoxButtons.OK,MessageBoxIcon.Error);
                }
            }
            //ストリームリーダーを閉じる
            StreamReader.Close();
            //データテーブルをdataGridView1に割り当てる
            dataGridView1.DataSource = dataset_sam;
            dataGridView1.DataMember = "sample";
上記の以前自分が書いたcsvファイルをdataGridViewに表示するプログラムを参考にしてみたのですが、配列をDataTableに格納するという部分がいまいち分からず、中途半端なままになっています。

自分の理想とする動作は配列A{1,3,5,...},B{2,4,6,...}があるとして、dataGridViewに表示する際に
 
A  |  B
1  |  2
3  |  4
5  |  6
.  |  .
.  |  .
.  |  .

となることなのですが、うまくできません。
そこで皆様にお聞きしたいのですが、配列をdataTableに格納し、上記のようにDataGridViewに表示するためにはどのようにすればいいのでしょうか?

よろしくお願いします。
2010/12/27(Mon) 19:52:50 編集(投稿者)

■No27913 に返信(としおさんの記事)
> 配列をDataTableに格納するという部分がいまいち分からず、中途半端なままになっています。

中途半端でもよいので、どのように記述されているのかお教えいただけると回答されるかたにも
伝わりやすいと思います。

> 自分の理想とする動作は配列A{1,3,5,...},B{2,4,6,...}があるとして、dataGridViewに表示する際に

// 配列 A, B があるとして
Int32[] A = new Int32[] { 1, 3, 5 };
Int32[] B = new Int32[] { 2, 4, 6 };

> A  |  B
> 1  |  2
> 3  |  4
> 5  |  6

// dataGridView に表示する
DataSet dataset_sam = new DataSet();
DataTable sample = dataset_sam.Tables.Add("sample");
sample.Columns.Add("A", typeof(Int32));
sample.Columns.Add("B", typeof(Int32));
for (Int32 i = 0; i < A.Length; i++) {
  sample.Rows.Add(A[i], B[i]);
}
dataGridView1.DataSource = dataset_sam;
dataGridView1.DataMember = sample.TableName;
■No27914に返信(もりおさんの記事)
> 2010/12/27(Mon) 19:52:50 編集(投稿者)
>
> ■No27913 に返信(としおさんの記事)
>>配列をDataTableに格納するという部分がいまいち分からず、中途半端なままになっています。
>
> 中途半端でもよいので、どのように記述されているのかお教えいただけると回答されるかたにも
> 伝わりやすいと思います。
>
>>自分の理想とする動作は配列A{1,3,5,...},B{2,4,6,...}があるとして、dataGridViewに表示する際に
>
> // 配列 A, B があるとして
> Int32[] A = new Int32[] { 1, 3, 5 };
> Int32[] B = new Int32[] { 2, 4, 6 };
>
>>A | B
>>1 | 2
>>3 | 4
>>5 | 6
>
> // dataGridView に表示する
> DataSet dataset_sam = new DataSet();
> DataTable sample = dataset_sam.Tables.Add("sample");
> sample.Columns.Add("A", typeof(Int32));
> sample.Columns.Add("B", typeof(Int32));
> for (Int32 i = 0; i < A.Length; i++) {
> sample.Rows.Add(A[i], B[i]);
> }
> dataGridView1.DataSource = dataset_sam;
> dataGridView1.DataMember = sample.TableName;

回答ありがとうございます。
おかげさまで動作しました。
またよろしくお願いします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板