Hai all
i am doing a VB.NET windows application . In that i am using an xml file having the following format
xml version="1.0" encoding="utf-8"?>
<CardDetRoot>
<CardDet>
<CardCode>CC1CardCode>
<OrgCode>O1OrgCode>
<CardName>O1CC1CardName>
<CardType>SAMCardType>
<MemSize>4KMemSize>
CardDet>
<CardDet>
<CardCode>CC2CardCode>
<OrgCode>O2OrgCode>
<CardName>O2CC2CardName>
<MemSize>4KMemSize>
CardDet>
<CardDet>
<CardCode>CC3CardCode>
<OrgCode>O2OrgCode>
<CardName>O2CC3CardName>
<CardType>USERCardType>
<MemSize>4KMemSize>
CardDet>
<CardDet>
<CardCode>CC4CardCode>
<OrgCode>O1OrgCode>
<CardName>O1CC4CardName>
<CardType>USERCardType>
<MemSize>8KMemSize>
CardDet>
CardDetRoot>
Here what i want to do is i want to select distinct OrgCode ie. O1 and O2.
Then for each OrgCode i want to select CardCode, CardName, CardType and MemSize.
Then Bind each OrgCode Details to different DataGrid.
That is for O1 there are 2 records
Record 1 : CardCode = CC1, CardName = O1CC1, CardType = SAM , MemSize = 4K
Record 2 : CardCode = CC4, CardName = O1CC4, CardType = USER, MemSize = 8K
I want to show there 2 records in one datagrid with datagrid heading as O1.
Similarly for O2 there are 2 records
Record 1 : CardCode = CC2, CardName = O2CC2, CardType = USER , MemSize = 4K
Record 2 : CardCode = CC3, CardName = O2CC3, CardType = USER, MemSize = 4K
I want to show there 2 records in one datagrid with datagrid heading as O2.
How i can do this .. Anybody knows ? Any help appreciated .
Thanks in Advance
Bechir BejaouiPosted Jul 19, 2008, 8:11 AM
XmlDocument oDocument = new XmlDocument();
oDocument.Load(/* your file path*/@"");
XmlWriter writer1 ;
XmlWriter writer2 ;
DataSet ds1 = new DataSet();
DataSet ds2 = new DataSet();
XmlNodeList NodeList = oDocument.SelectNodes("/CardDetRoot/CardDet");
using (StringWriter writer1 = new StringWriter(), writer2 = new StringWriter())
{
foreach (XmlNode node in NodeList)
{
if (node.ChildNodes[0].InnerText == "CC1" || node.ChildNodes[0].InnerText == "CC4")
{
writer1.WriteLine(node.OuterXml);
}
if (node.ChildNodes[0].InnerText == "CC2" || node.ChildNodes[0].InnerText == "CC3")
{
writer2.WriteLine(node.OuterXml);
}
}
ds1.WriteXml(writer1);
ds2.WriteXml(writer2);
}
DataGridView gridView1 = new DataGridView();
DataGridView gridView2 = new DataGridView();
gridView1.DataSource = ds1;
gridView1.DataMember = ds1.Tables[0].TableName;
gridView1.DataSource = ds2;
gridView1.DataMember = ds2.Tables[0].TableName;
}
I can't guarantee that it's work but neverthe less try it if there is a rectification so do it. There is another solution is that you use xslt instead the above dom sample