DgvPadを使う前に、DataGridViewにセットするデータの種類とオブジェクトの関係関係を説明しておくよ。
これをデータバインディングっていうんだけど、これ以外に非バインディングといって、プログラムでデータをセットする機能も用意されているんだ。
DatasetオブジェクトでデータベースやXMLファイルを読み込んで、DatasetオブジェクトをDataSourceプロパティにセットするだけで自動表示してくれる機能だ。
文字通りプログラムで列を定義して、行データを追加していく方法。萌美ちゃんがやっている方法だね。
わかりにくいので図を書いて説明するね。
DataGridViewとデータの関係をまとめるとこんな感じになるかな。
「結構、複雑なんですね」
そうだね。でも、データベースはWizardを使えば結構簡単なんだ。単純にデータベースをDataGridViewに表示するだけならプログラムは自動で作成してくれるからね。データ更新についてもUpDate()メソッドを呼び出すだけだから簡単なんだ。
「データベースって経験がないんですけど、簡単にできるものなんですか?」
既に存在するデータベースを使うなら、Visual Studioの使い方さえ分かれば簡単だよ。ただ、DataGridViewの説明から離れちゃうのでこの話はまた別の機会にしようね。
「わかりました--。そのときにはよろしくお願いします」
それじゃ、データの受け渡しについて焦点を当て考えてみよう。
「DataSourceプロパティに割り当てるオブジェクトの種類によって操作が変わる」
このことをよく覚えておいてね。
DatasetオブジェクトのReadXmlメソッドでファイルを読み込み、DatasetオブジェクトをDataGridView.DataSourceプロパティにをセットするだけでデータがDataGridViewに表示されるんだ。
「えっ、そんなに簡単にできるんですか?」
そうだよ。ただどんなXMLファイルでもいい訳じゃないんだけどね。あくまでもXMLファイルはデータのみと考えること。どのように表示するかは別に考えることが重要なんだ。
「つまり、データと表現方法は切り離して考えるってことですか?」
そういうこと。XMLにデータの書式を組み込むことを考えると時間を浪費することになるからね。
もう一つ重要なことは、DataGridViewで手入力による行追加はできるけど、プログラムでDataGridViewに行追加することはできなくなるんだ。
「どうすれば、行追加することができるんですか?」
それはね、DataSourceにセットしたオブジェクト(DatasetやDataTable)に追加すると自動でDataGridViewに表示されるよ。
たとえば、<DataSet>.Tables[0].Rows.Add(<DataRow>); こんな感じ。
それから、DatasetオブジェクトをBindingSource経由でDataGridView.DataSourceプロパティにセットすると、BindingSourceオブジェクトの操作でフィルターすることも簡単にできるから覚えておくといいよ。
「わかりました」
「でも、列や行、セルスタイルについて知りたいんですけど」
わかった、わかった。そう焦らないで。