- - PR -
DataTableオブジェクトにあるデータソースをDataGridViewに反映
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-01-15 22:03
VS2005でC#、Windowsアプリケーションを開発しています。
今回初めてVS2005でWindowsアプリケーションを開発していまして、 DataTable内にあるデータソースをDataGridViewコントロールに表示するような画面を作っています。 処理の流れとしては、 (1)CSVファイルよりデータを読み込み、DataTableオブジェクトに格納。 (2)dataGridView1の列を定義 (3)CSVデータをdataGridView1に反映 になっていまして、それらの処理のソースが以下のようになっています。 ----------------------------------------------------------------------------------------- ※※※ 画面(Form)上には"dataGridView1"というIDのDataGridViewコントロールが貼り付けてあります。※※※ public partial class ReadCsv01 : Form { DataTable dt = new DataTable(); public ReadCsv01() { InitializeComponent(); //(1)DataTableオブジェクトへCSVデータを格納 setDataTable(); //(2)DataGridViewの列を定義 setDataGridView(); //(3)DataGridViewに反映 dataGridView1.DataSource = dt; } //(1)DataTableオブジェクトへCSVデータを格納 private void setDataTable() { //(1-1) DataTableオブジェクトの列を定義 dt.Columns.Add("mise", typeof(string)); dt.Columns.Add("jyusyo", typeof(string)); dt.Columns.Add("tel", typeof(string)); //(1-2) CSVファイルからデータを読み込み、DataTableに格納 System.IO.StreamReader streamReader = new System.IO.StreamReader("C:\\\\\\\\temp\\\\\\\\MiseList.csv", System.Text.Encoding.GetEncoding(932)); while (streamReader.Peek() != -1) { string[] buffer = streamReader.ReadLine().Split(','); dt.Rows.Add(buffer); } } //(2)DataGridViewの列を定義 private void setDataGridView() { //(2-1)[mise]ボタンをdataGridView1に定義 DataGridViewButtonColumn col1 = new DataGridViewButtonColumn(); col1.Name = "mise"; dataGridView1.Columns.Add(col1); //(2-2)[jyusyo]テキストボックスをdataGridView1に定義 DataGridViewTextBoxColumn col2 = new DataGridViewTextBoxColumn(); col2.Name = "jyusyo"; dataGridView1.Columns.Add(col2); //(2-3)[tel]テキストボックスをdataGridView1に定義 DataGridViewTextBoxColumn col3 = new DataGridViewTextBoxColumn(); col3.Name = "tel"; dataGridView1.Columns.Add(col3); } } ----------------------------------------------------------------------------------------- 上記のプログラムを実行すると、dataGridViewer1には、 [mise]ボタン、[jyusyo]テキストボックス、[tel]テキストボックス、[mise]テキストボックス、[jyusyo]テキストボックス、[tel]テキストボックス の計6つの列が作成され、後半3つの[mise]テキストボックス、[jyusyo]テキストボックス、[tel]テキストボックスの列に CSVファイルより読み込んだデータがセットされています。 イメージとしては↓の感じになっています。 mise | jyusyo | tel | mise | jyusyo | tel | ----------------------------------------------------------------------------- (ボタン) | | | ○○商店 | 東京都板橋区・・・・ | 03-1111-2222 (ボタン) | | | ○○事務 | 東京都新宿区・・・・ | 03-4444-5555 (ボタン) | | | ×××屋 | 東京都港区・・・・ | 03-6666-7777 理想の動作としては、dataGridView1には[mise]ボタン、[jyusyo]テキストボックス、[tel]テキストボックスの 3つの列が表示されるようにしたいのですが、どこの部分を修正すればうまく動作するのでしょうか? ご教授の程、宜しくお願い致します。 | ||||
|
投稿日時: 2008-01-16 07:26
動いているのか、を把握しておくといいですよ。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||
|
投稿日時: 2008-01-16 19:37
ぽぴ王子様 ありがとうございます。
教えて頂きましたDataGridView.AutoGenerateColumnsにfalseを設定し、 列が作成されないようにしましたが、改善されませんでした。 public partial class ReadCsv01 : Form { DataTable dt = new DataTable(); public ReadCsv01() { InitializeComponent(); dataGridView1.AutoGenerateColumns = false; //(1)DataTableオブジェクトへCSVデータを格納 setDataTable(); //(2)DataGridViewの列を定義 setDataGridView(); //(3)DataGridViewに反映 dataGridView1.DataSource = dt; } ・・・・ それとも、私がやったことは検討違いのことだったのでしょうか? 引き続きよろしくお願いいたします。 |
1