2016-11-10 14 views
0

XMLを使用したDataGridviewsでちょっと新しくなりました。私の問題は2つのデータグリッドがあることです。最初のデータグリッドテーブルにはXMLファイルからも次のデータが含まれています。datagidviewテーブルから1つのセルを選択し、XMLファイルから選択したセルの値を検索する

empl_num | Name 
    1  | Carl 
    2  | Mark 
    3  | Tanner 

も、私は含んで、このXMLファイルをしている:

<Address> 
    <Data1> 
    <employee> 
     <empl_num>1</empl_num> 
     <name>Carl</name> 
     <empl_num>2</empl_num> 
     <name>Mark</name> 
     <empl_num>3</empl_num> 
     <name>Tanner</name> 
    </employee> 
    </Data1> 
    <Data2> 
    <Person> 
     <EMPL_NUM>>100</EMPL_NUM> 
     <NAME>Carl</NAME> 
     <ID_NUM>1</ID_NUM> 
     <IsRequired>0</IsRequired> 
    </Person> 
    <Person> 
     <EMPL_NUM>200</EMPL_NUM> 
     <NAME>Mark</NAME> 
     <ID_NUM>2</ID_NUM> 
     <IsRequired>0</IsRequired> 
    </Person> 
    <Person> 
     <EMPL_NUM>300</EMPL_NUM> 
     <NAME>Tanner</NAME> 
     <ID_NUM>3</ID_NUM> 
     <IsRequired>0</IsRequired> 
    </Person> 
</Data2> 
</Address> 

は、私は私がDataGridViewのテーブルから名前カールをクリックして、それがID_NUMに基づいてXMLデータを取得するたびに道を聞いてもとそれを2番目のdatagridviewテーブルに表示します(以下の例を示す望ましい出力)。

example: 

- datagridview1-        -datagridview2- 

empl_num | Name    EMPL_NUM | Name | ID_NUM | IsRequired     
    1  | Carl     100 | Carl | 1  |  0 
    2  | Mark 
    3  | Tanner 
+0

私はdatagridview1のデータをデータセットを使用して表示できました。私はクリックされた名前のxmlデータをデータグリービューに表示する方法を見つけることができません – user1998735

+0

申し訳ありません私はC#のWindowsフォームを使用して私を含めることを忘れました – user1998735

答えて

1

バインディングソースを介した外部キ​​ーによるデータバインディングを使用します。

// Fill data table (you should do it from xml file) 
var dt1 = new DataTable("empl"); 
dt1.Columns.Add("empl_num"); 
dt1.Columns.Add("Name"); 
dt1.Rows.Add(1, "Carl"); 
dt1.Rows.Add(2, "Mark"); 
dt1.Rows.Add(3, "Tanner"); 

// Fill second data table 
var dataSet = new DataSet(); 
using (var xmlReader = XmlReader.Create("test.xml")) 
{ 
    xmlReader.ReadToFollowing("Data2"); 
    dataSet.ReadXml(xmlReader); 
} 

// Set a relation between two tables 
dataSet.Tables.Add(dt1); 
dataSet.Relations.Add("FK", dt1.Columns["empl_num"], 
    dataSet.Tables[0].Columns["ID_NUM"]); 


var bs1 = new BindingSource(); 
bs1.DataSource = dataSet; 
bs1.DataMember = "empl"; 

var bs2 = new BindingSource(); 
bs2.DataSource = bs1; 
bs2.DataMember = "FK"; // note to foreign key 


// Bind sources to grids 
dataGridView1.DataSource = bs1; 
dataGridView2.DataSource = bs2; 
+0

こんにちはアレクサンダー、私はこのエラーが発生している "追加情報:DataTableはXmlからのスキーマ推論をサポートしています "。データテーブルにxmlファイルを設定できますか? – user1998735

+0

「従業員」ノードを持つXML FILEを使用してデータ表を作成できますか? – user1998735

+0

はい、同じxmlファイルに含まれています – user1998735

関連する問題