2009-08-25 7 views
0

条件付きでDataGridViewにデータを設定する必要があります。データは1つのXMLファイルから取得されます。C#DataGridViewのXMLサブセットへのバインド

<?xml version="1.0" standalone="yes"?> 
<people> 
    <person> 
    <name>Bob</name> 
    <dogs> 
     <dog><name>Rover</name></dog> 
     <dog><name>Rex</name></dog> 
    </dogs> 
    </person> 
    <person> 
    <name>Jim</name> 
    <dogs> 
     <dog><name>Duke</name></dog> 
     <dog><name>Colin</name></dog> 
     <dog><name>Gnasher</name></dog> 
    </dogs> 
    </person> 
</people> 

私がDataGridViewにすべての犬を表示することができますが、特定の人が所有するものにリストを制限する必要があります。

DataSet ds = new DataSet(); 
ds.ReadXml("data.xml"); 

dataGridView1.DataSource = ds; 
dataGridView1.DataMember = "dog"; 

どうすればよいですか?

おかげ スチュアート

答えて

0

次のコードでXElementsを得ることができます:私はここにも犬の所有者を選択するだけの例として

var xml = XDocument.Load(filePath); 

var people = xml.Elements("people").Elements("person"); 
var dogElements = people.Elements("dogs").Elements("dog").Where(p => p.Parent.Parent.Element("name").Value == "Bob"); 

var dogs = dogElements.Select(d => new {Name = d.Element("name").Value, Owner = d.Parent.Parent.Element("name").Value}); 

dataGridView1.DataSource = dogs; 
dataGridView1.DataMember = "Name"; 

あなたは前のLINQでプレイしていない...うーんSystem.XmlのとSystem.Xml.Linq

+0

への参照を追加する必要があります。私はそれを行こう。ありがとう! –

+0

最後に、これを試してみることにします!しかし、最後の行(DataMemberを設定するとき)に問題があります: "フィールド名の子リストは作成できません。" 私にポインタを教えてもらえますか?前もって感謝します! –

関連する問題