投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/1/23 21:04:31
今回は、データを保存するために、DataTable の WriteXml メソッドを使おうとしているのですよね?

ならばまずは、「DataTable を作り、列情報を定義し、さらにそこにデータを登録する方法」を覚える必要があるかと思います。
それを DataGridView と関連付けるのは、その後の話です。

DataTable を作る方法は幾つかあります。
(a) DataSet に対して、.Tables.Add のメソッドを呼び出して作成する方法。
(b) Dim dTbl As New DataTable() のように、New で生成する方法。
(c) デザイナで型付 DataSet を作っておき、それを利用する方法。
--
ここでは、(c) の方法を紹介しておきます。
実験用の新しいプロジェクトを作成してください。

まず、[プロジェクト]-[新しい項目の追加]メニューを辿り、そこから
「データセット」というアイコンを選択し、ソリューションに追加します。(DataSet1.xsd)

そうすると、データセット デザイナという画面に切り替わりますので、右クリックして
[追加]→[DataTable]を選択し、新規に DataTable を作ります。
作成されたテーブルの名前は、"商品リスト"などに変更しておきましょう。

さらに、その DataTable の灰色部分を右クリックし、[追加]-[列]で列情報を追加します。
この作業を 3 回繰り返し、テーブルに 3 つの列を追加します。
それぞれの列名は、管理番号/タイトル/商品名などと付ければ良いでしょう。


それができたら、今度はフォーム画面に戻ります。
フォームには、Button を数個と DataGridView を貼っておきます。

そして、コードとして
Private ds As New DataSet1()
Private Sub Form1_Load() Handles MyBase.Load
    DataGridView1.DataSource = ds.商品リスト
End Sub
と記述します。

New している箇所が、定義したテーブルを作成する箇所です。
これを DataSource に割り当てておくと、このテーブルと DataGridView が
関連付けられ、それぞれを編集した結果が連動するようになります。
DataGridView への列定義は、データテーブルの構造から自動的に読み込まれます。

一度、この状態で実行してみてください。
DataGridView にデータを書き込める状態になっているはずです。

そして、書き込まれたデータを保存する処理については、
Private Sub Button1_Click() Handles Button1.Click
    ds.商品リスト.WriteXml("C:\temp\SampleData.xml")
End Sub
これだけで OK です。
DataGridView に何行か書き込んでからボタンを押すと、ファイルが生成されるはずです。

ちなみにファイルの読み込みは、
Private Sub Button2_Click() Handles Button2.Click
    ds.商品リスト.ReadXml("C:\temp\SampleData.xml")
End Sub
です。


なお、データを DataGridView からユーザーに入力させるのではなく、
プログラムから制御したい場合には、
ds.商品リスト.Add商品リストRow(100, "チップスター""紀州の梅味")
などと記述すればOKです。

なお、DataTable の構造を事前に決定できない場合には、デザイナを使わずに
先の(a), (b) 案で DataTable を用意する事になります。