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

わんくま同盟

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

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


■84128 / )  Re[3]: 多階層のxmlのDataTableへの読み書きについて
□投稿者/ 魔界の仮面弁士 (1284回)-(2017/05/17(Wed) 20:46:16)
2017/05/18(Thu) 12:07:08 編集(投稿者)

No84127 (なと さん) に返信
> DataGridViewだとParentしか読まなかったので、気が付きませんでした!

.DataSource = ds;
.DataMember = tableName;

の代わりに、

.DataSource = ds.Tables[tableName];

でも OK です。これは DataGridView であっても同じことです。


ただ、階層問い合わせにするのであれば、
DataSet/DataTable を DataSource に直接バインドするのではなく、
BindingSource 経由で渡した方が良いかもしれません。


>>リレーションを繋ぐのが面倒だったので
> ds.Relations.Addを使えばいいのかな・・・ちょっと調べてみます。

ReadXml を呼び出した時点で、リレーションは自動的に貼られています。


『ds.Tables["Parent"].Rows[0].GetChildRows("Parent_Childs")[0]』とすれば
『ds.Tables["Childs"].Rows[0]』を指し示します。
これは <Childs> のタグに相当します。(Children ではないのですね)


『ds.Tables["Childs"].Rows[0].GetChildRows("Childs_Child")[0]』なら、
『ds.Tables["Child"].Rows[0]』(すなわち 35歳の子1 の行)です。


もしも DataGridView に表示させるのであれば、
それぞれの DataGridViewRow から DataBoundItem プロパティ経由で
DataRowView オブジェクトが得られるので、その Row プロパティから、
該当の DataRow オブジェクトが得られるようになっています。

DataRow さえ得られれば、あとは上記と同様に、
GetChildRows メソッドあるいは GetParentRow/GetParentRows メソッドで
階層を辿ることができるでしょう。
返信 編集キー/


管理者用

- Child Tree -