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

.NET 2.0 Winフォームアプリケーション基本的な行列データの扱い方

環境/言語:[win2000 VS2005 C# .NET2.0]
分類:[.NET]

いつもお世話になっております。
表記 VS2005 .NET2.0のリソースを使用した
行列データの扱いの基本形を確認させて下さい。

DataGridView(ヒューマンインターフェース)⇔ アプリケーションで使用

   表示↑↓入力

DataSet(型指定 データ保持)⇔アプリケーションで使用

   読込↑↓保存
  
CSV外部ファイル(元データ)

上記でよいでしょうか。確認したい個所は
@CSVファイルは、DataSetによるオブジェクトに直接読み込めるか
A矢印で記入した動作は、自動ではなくその都度ボタンクリックで動作させたいが
 そのようなメソッドは用意されているか

以上 よろしくお願いします
質問者です。質問が漠然としすぎているので追加させていただきます。

@CSV外部ファイルと DataSetオブジェクトとのデータのやり取りに関しては
 Xml形式で一度出力し、別オブジェクトでCSV形式に
 変換してファイルに入出力する方法があるようです。
 直接CSVで出力している方がいたら方法を教えて下さい。

ADataset - DataGridView 間をバインドすれば、
 それぞれ自動で更新されるようですが、自動にはしたくありません。
 Dataset→DataGridView と DataGridView→Dataset のそれぞれの更新について
 ボタンクリックなどで明示的に更新したいと思いますが、良い方法はあるでしょうか。

よろしくお願いします。
■No20900に返信(kentaさんの記事)
>  それぞれ自動で更新されるようですが、自動にはしたくありません。
>  Dataset→DataGridView と DataGridView→Dataset のそれぞれの更新について
Datasetは必要なのでしょうか?
DataGridView と配列(とか構造体)などの間で、手動(=作るプログラム)でやりとりすれば充分ではないかと
CSVは、単なる"," 区切りの文字データですから、1行づつ読んで変数に入れたり、
配列から、"," 区切りの1行を書くのは、Xml形式を扱うよりも最も初歩的なことです。IO.StreamReaderとかを調べられたらいいです
参考になれば幸いです
■No20900に返信(kentaさんの記事)
こちらのHPにもサンプルが乗っています。
ttp://dobon.net/vb/dotnet/file/readcsvfile.html

ちなみに自分がやってる方法が参考になるかは、判りませんが、
XMLにカラムの定義(タイプなど)を指定し、定義しておき、外部ファイルとしておきます。
あとはDataTableをXMLの定義にあわせて作成して、
文字列を読み込みながら、データを区切っていき、DataTableに値を設定します。
あとはDataSourceにDataTableを設定します。

みたいな方法でやってます。
ちなみにC#ですが、上で紹介しているTextFieldParserをつかってたりします。

CSVのファイル定義が、""で囲まれているものと囲まれていないものなどが
混在して、カンマがデータ内容としてあり得るのであれば、
多少めんどくさいかもしれませんが、1行読み込んで分割はy4yama様の
おっしゃっている通りできるので、そちらでもいいかもしれません。
詳しくはRFCの「CSVファイルの一般的書式」なんかにのってます。
日本語訳ですが、読み込んで分割するなら読んでみるのもいいかもしれません。
ttp://www.kasai.fm/wiki/rfc4180jp
y4yama様
ご回答ありがとうございます。

>Datasetは必要なのでしょうか?
DatagridViewへの記入データは、データのプレビュー的な機能に使い、
DatagridViewの記入データを明示的に渡されたオブジェクト(dataset?)は、
アプリ本体の機能に使用したいと考えました。
必ずしもDatasetの必要はありませんが、datasetの方がデータの受け渡しが容易かと
考えたため。こういった場合は、Datasetを使うメリットはあるのでしょうか。


> CSVは、単なる"," 区切りの文字データですから、1行づつ読んで変数に入れたり、
とりあえず、valueでdatagridviewの値を読んで、並べて出力しました。
ありがとうございます。
質問者です。

じゅで様
参考にさせていただきます。 ありがとうございます。

>Datasetは必要なのでしょうか?
DataGirdViewのオブジェクトを2個つくり、1個はプレビュー用のUI、
もう一つは決定されたデータを納める用にしました。
決定されたデータを納める用は 非表示、ReadOnlyにして保護しました。
メソッドを使うまでもなく、代入できました。
解決済み!
> じゅで様
そういえば、前にTextFieldParser を拝見して、これは、いいな と思ってたのに・・・すぐ忘れてしまうものですネ・・・ありがとうございました
解決済み!

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