こんにちは、Blackwinglsです。
ご質問の内容がかなり広範囲にわたる為、なかなか回答しづらい内容なのですが・・・
どういった流れで処理したいのか、また何処が判らないのか整理してみてはいかがでしょうか。
1 CSV ファイルを DataTable に読み込む
2 DataTable から、分類を重複しないように取り出す。
3 2で取り出した分類をコンボボックスにセットする。
4 コンボボックスで分類が選択されたら、1で作った DataTable から該当するデータを抽出する。
5 4のデータを DataGridView に表示する。
こんな流れでしょうか?
前述の
> CSVファイルの全部を読み込むのではなく、部分部分を読み込むにはどのようにしたら良いのでしょうか??
とは処理の流れが違ってしまいますが、ご要望の動きはするのではないかと思います。
フォーム名は、From1、コンボボックス名はcomboBox1、データグリッドビュー名はdataGridView1、と定義してあります。
DataTable dt, dtFilter;
DataView dv;
private void Form1_Load(object sender, EventArgs e)
{
//CSVファイルのあるフォルダ
string csvDir = Application.StartupPath + @"\";
//CSVファイルの名前
string csvFileName = "Schedule.csv"; //スキーマファイルの作成を忘れずに・・・
//接続文字列
string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ csvDir + ";Extended Properties=\"text;HDR=No;FMT=Delimited\"";
System.Data.OleDb.OleDbConnection con =
new System.Data.OleDb.OleDbConnection(conString);
string commText = "SELECT * FROM [" + csvFileName + "]";
System.Data.OleDb.OleDbDataAdapter da =
new System.Data.OleDb.OleDbDataAdapter(commText, con);
//DataTableに格納する
dt = new DataTable();
da.Fill(dt);
dv = new DataView(dt);
//分類を重複しないように抽出
dtFilter = new DataTable();
dtFilter = dv.ToTable("dtFilter", true, "Kind"); //スキーマファイルにて分類は「Kind」に定義
//comboBox1に分類をセット
for (int i = 0; i < dtFilter.Rows.Count; i++)
{
comboBox1.Items.Add(dtFilter.Rows[i][0].ToString());
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//選択された分類で予定を抽出
string FilterStr = "Kind = '" + comboBox1.Text + "'";
dv.RowFilter = FilterStr;
抽出された予定をグリッドに表示
dataGridView1.DataSource = dv;
}
ではでは~★
補足
質問がわかりににくくてすみません。 CSVファイルの全部を読み込むのではなく、部分部分を読み込むにはどのようにしたら良いのでしょうか??