C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: グリッドビューにデータテーブルの内容が反映されない


(過去ログ 121 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■72790 / inTopicNo.1)  グリッドビューにデータテーブルの内容が反映されない
  
□投稿者/ ムーンリバー (1回)-(2014/07/16(Wed) 13:19:25)

分類:[.NET 全般] 

こんにちは!

開発環境はWin7、C# 3.5です。

DataGridViewにCSVファイルを読み込んでいます。
フォームをロードすると「メインコード」が走り、FILE_PATHに設定されているCSVファイルが読み込まれ、DataGridViewに紐付けられます。

これは問題なく動きます。

次に、フォームに配置されているボタンをクリックする事により、「検索ボタン」のコードが走ります。

私の中では、DataGridViewの列「野菜の種類」で「根菜類」のみ抽出されると思いましたが、DataGridViewには、

RowError,RowState,Table,HasErrors
というヘッダーが表示されてしまいます・・・
下記のような感じでDataGridViewに表示がされます。
http://fast-uploader.com/file/6961039633463/

どこを修正すれば、DataGridViewにDataTableの内容が反映されるでしょうか?

**メインコード****************************************************
DataTable dt = new DataTable(); //データテーブル

using (TextFieldParser parser = new TextFieldParser(FILE_PATH,
Encoding.GetEncoding("shift_jis")))
{

// DataTable の列名を設定します。
dt.Columns.Add("野菜の種類", Type.GetType("System.String"));
dt.Columns.Add("野菜の名前", Type.GetType("System.String"));

// 残りファイル終端まで読み込み
while (!parser.EndOfData)
{
fields = parser.ReadFields(); //フィールド区切りで1行読み込み
DataRow row = dt.NewRow(); //行追加
row.ItemArray = fields;
dt.Rows.Add(row);
}

dgv.DataSource = dt;
}
******************************************************************

**検索ボタン******************************************************

private void cmdSearch_Click(object sender, EventArgs e)
{
DataRow[] foundRows;

foundRows = dt.Select("[野菜の種類] = '根菜類'");
dgv.DataSource = foundRows;
dgv.DataBindings.ToString();
}

******************************************************************
引用返信 編集キー/
■72791 / inTopicNo.2)  Re[1]: グリッドビューにデータテーブルの内容が反映されない
□投稿者/ Hongliang (209回)-(2014/07/16(Wed) 13:31:41)
> dgv.DataSource = dt;

初めにバインドしたときはDataTableをDataSourceにしていますが、

> DataRow[] foundRows;
> foundRows = dt.Select("[野菜の種類] = '根菜類'");
> dgv.DataSource = foundRows;

二回目にバインドしてるのはDataRow[]になってますから。

フィルタリングはdt.DefaultViewのRowFilterでやるのはどうでしょうか?
// これならDataSourceを設定し直す必要もありません。

引用返信 編集キー/
■72792 / inTopicNo.3)  Re[2]: グリッドビューにデータテーブルの内容が反映されない
□投稿者/ ムーンリバー (2回)-(2014/07/16(Wed) 16:22:51)
Hongliang さん

DataView.RowFilter プロパティでいけました。

dt.DefaultView.RowFilter = "野菜の種類 = '根菜類'";
でいけました。

http://msdn.microsoft.com/ja-jp/library/system.data.dataview.rowfilter(v=vs.110).aspx

感謝です!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -