2016-11-10 90 views
0

对于在datagridviews中使用XML,我有点新意。我的问题是我有2个datagrids,我的第一个datagrid表中也包含以下数据也来自XML文件。从datagidview表中选择一个单元格并从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数据和将其显示到第二个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数据显示在datagridview2 – user1998735

+0

对不起,我忘了包括即时通讯使用C#窗体形式 – 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

嗨亚历山大,我得到这个错误“附加信息:数据表不支持来自Xml的模式推断“。我可以使用xmlfile填充数据表吗? – user1998735

+0

是否可以使用“雇员”节点填充XML文件的数据表? – user1998735

+0

是的,它包含在同一个xml文件中 – user1998735

相关问题