- - PR -
DataGridViewによるDataSetの表示
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-11-04 16:13
お世話になります。下記現象のためにDataSetの内容の表示・編集ができずに困っています。解決法や、その他スマートな代替手法があればよろしくお願いします。
■ 現象 DataSetの内容をDataGridViewにて表示させようとしていますが、うまく動作しません。BindingSourceを経由すればよいと思うのですが、実行すると空白の行が項目数分出てくるだけで、値が表示されません。 BindingSourceを用いず、デザイナからDataSetのプロパティにてスキーマを定義すれば表示されますが、列数が多いためコードで作成したいと思います。 ■ 目的 テキストファイルより入手したデータをDataSetにいったん格納し、それをDataGridViewにて表示させること。 ■ 開発環境 VisualStudio2005、C# (必要であればSQLServer2005) ■ コード private void button1_Click(object sender, EventArgs e) { ds.Reset();// dsはDataSet ds.Tables.Add("Customers"); DataTable _dt = ds.Tables["Customers"]; _td.clear(); //スキーマ定義。96個の列を作成。1列目、2列目を主キーにする。 for (int i = 0; i <= 95; i++) _dt.Columns.Add(i.ToString(), typeof(object)); _dt.PrimaryKey = new DataColumn[]{ _dt.Columns["0"] , _dt.Columns["1"]}; string strLine; //読みこんだレコードが入る string[] strCols; //レコードを区切り文字で区切った文字列が入る配列 int line; //読みこんだファイルの何行目かを示す、主キーの一つ。 StreamReader sr = new StreamReader(_filename, _encoding);// ファイル読み込み。_filename,_encodingは事前に設定済み for(line = 0 ; (strLine = sr.ReadLine()) != null ; line++) { DataRow row = _dt.NewRow(); strCols = strLine.Split(",".ToCharArray()); row["0"] = line;//1列目には行数 int colnum = 0; foreach (string colVal in strCols) { row[colnum.ToString()] = colVal; colnum++; } _dt.Rows.Add(row); } dataGridView1.DataSource = bindingSource1; bindingSource1.DataSource = ds; bindingSource1.DataMember = "Receipts";} } [ メッセージ編集済み 編集者: やき 編集日時 2008-11-04 16:15 ] | ||||
|
投稿日時: 2008-11-04 17:53
自己解決しましたので報告です。
■ 原因 デザイナでDataGridViewのDataSourceプロパティを編集していたため。 このプロパティを指定していると、たとえその指定先に変更が加えられようとも表示が更新されない(させる方法がもしかしたらあるかも?) ■ 解決法 コード上でDataSourceの内容を変更する場合は、DataSourceを指定しない。変更をした後に、コード上でDataSourceを指定する。 ■ コード(基本的に同じ)
なお、投稿時のコードはビルドできないものを添付してしまいました。申し訳ありませんでした。 [ メッセージ編集済み 編集者: やき 編集日時 2008-11-04 17:57 ] [ メッセージ編集済み 編集者: やき 編集日時 2008-11-04 17:59 ] |
1