I have data in my XML file that i collected by reading my XML file and storing my data based on each node into an object.
I want to fill my DataGrid with the data from my List (jobList), but I am not sure what I'm doing wrong.
Dynamically building table and adding data. Building the XML manually.
public partial class amgrid : Window
{
public static Configuration AppSettings { get; set; }
JobList job = new JobList();
public amgrid()
{
InitializeComponent();
XmlDocument doc = new XmlDocument();
string docPath = @"C:\Users\contract_lshamoon\Desktop\arm\arm\arm\xmldb.xml";
doc.Load(docPath);
XmlElement root = doc.DocumentElement;
XmlNodeList elemList = root.GetElementsByTagName("Jobs");
findAllNodes(root);
doc.Save(@"C:\Users\contract_lshamoon\Desktop\arm\arm\arm\xmldb.xml");
DG.DataContext = job;
}
int index = 0;
public void findAllNodes(XmlNode node)
{
index++;
foreach (XmlNode n in node)
findAllNodes(n);
if (node.Name == "Job")
{
job.Job = index.ToString();
Console.WriteLine();
Console.WriteLine("job.Job" + " : " + index + " : " + job.Job);
}
if (node.Name == "JobDate")
{
job.JobDate = node.InnerText;
Console.WriteLine("Job.JobDate" + " : " + job.JobDate);
}
if (node.Name == "File")
{
job.File = node.InnerText;
Console.WriteLine("Job.File" + " : " + job.File);
}
if (node.Name == "FilePath")
{
job.FilePath = node.InnerText;
Console.WriteLine("Job.FilePath" + " : " + job.FilePath);
}
if (node.Name == "Extension")
{
job.Extension = node.InnerText;
Console.WriteLine("Job.Extension" + " : " + job.Extension);
}
if (node.Name == "Age")
{
job.Age = node.InnerText;
Console.WriteLine("Job.Age" + " : " + job.Age);
}
if (node.Name == "JobComment")
{
job.JobComment = node.InnerText;
Console.WriteLine("Job.JobComment" + " : " + job.JobComment);
}
}
private List<JobList> LoadCollectionData()
{
List<JobList> jobList = new List<JobList>();
jobList.Add(new JobList()
{
Job = job.Job,
JobDate = job.JobDate,
FilePath = job.FilePath,
Extension = job.Extension,
Age = job.Age,
JobComment = job.JobComment
});
return jobList;
}
}
public class JobList
{
[XmlAttribute("JobId")]
public string Job { get; set; }
[XmlElement("JobDate")]
public string JobDate { get; set; }
[XmlElement("File")]
public string File { get; set; }
[XmlElement("FilePath")]
public string FilePath { get; set; }
[XmlElement("Extension")]
public string Extension { get; set; }
[XmlElement("Age")]
public string Age { get; set; }
[XmlElement("JobComment")]
public string JobComment { get; set; }
}
<Grid>
<DataGrid x:Name="DG" ItemsSource="{Binding jobList}">
<DataGrid.Columns>
<DataGridTextColumn x:Name="JobCol" Binding="{Binding Job}" Header="Job"/>
<DataGridTextColumn x:Name="JobDateCol" Binding="{Binding JobDate}" Header="Date"/>
<DataGridTextColumn x:Name="FilePathCol" Binding="{Binding FilePath}" Header="Path"/>
<DataGridTextColumn x:Name="ExtensionCol" Binding="{Binding Extension}" Header="Extension"/>
<DataGridTextColumn x:Name="AgeCol" Binding="{Binding Age}" Header="Age"/>
<DataGridTextColumn x:Name="JobCommentCol" Binding="{Binding JobComment}" Header="Comment"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
I just want every row to have each list item displayed.
public class JobList
{
[XmlElement("Job")]
public string Job { get; set; }
[XmlElement("JobDate")]
public string JobDate { get; set; }
[XmlElement("File")]
public string File { get; set; }
[XmlElement("FilePath")]
public string FilePath { get; set; }
[XmlElement("Extension")]
public string Extension { get; set; }
[XmlElement("Age")]
public string c { get; set; }
[XmlElement("JobComment")]
public string JobComment { get; set; }
}
public partial class amgrid : Window
{
public amgrid()
{
InitializeComponent();
XmlDocument doc = new XmlDocument();
string docPath = @"C:\Users\contract_lshamoon\Desktop\arm\arm\arm\xmldb.xml";
doc.Load(docPath);
XmlElement root = doc.DocumentElement;
XmlNodeList elemList = root.GetElementsByTagName("Jobs");
findAllNodes(root);
doc.Save(@"C:\Users\contract_lshamoon\Desktop\arm\arm\arm\xmldb.xml");
}
public void findAllNodes(XmlNode node)
{
foreach (XmlNode n in node)
{
JobList jobs = new JobList();
string job = n.Attributes["JobId"].Value;
string date = n.FirstChild.InnerText;
string file = n.FirstChild.NextSibling.InnerText;
string path = n.FirstChild.NextSibling.NextSibling.InnerText;
string extension = n.FirstChild.NextSibling.NextSibling.NextSibling.InnerText;
string age = n.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.InnerText;
string comment = n.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText;
jobs.Job = job;
jobs.JobDate = date;
jobs.File = file;
jobs.FilePath = path;
jobs.Extension = extension;
jobs.c = age;
jobs.JobComment = comment;
DG.DataContext = jobs;
DG.Items.Add(jobs);
}
}
}
<DataGrid x:Name="DG">
<DataGrid.DataContext>
<local:JobList/>
</DataGrid.DataContext>
<DataGrid.Columns>
<DataGridTextColumn x:Name="JobCol" Binding="{Binding Job}" Header="Job"/>
<DataGridTextColumn x:Name="JobDateCol" Binding="{Binding JobDate}" Header="Date"/>
<DataGridTextColumn x:Name="FilePathCol" Binding="{Binding FilePath}" Header="Path"/>
<DataGridTextColumn x:Name="ExtensionCol" Binding="{Binding Extension}" Header="Extension"/>
<DataGridTextColumn x:Name="AgeCol" Binding="{Binding Age}" Header="Age"/>
<DataGridTextColumn x:Name="JobCommentCol" Binding="{Binding JobComment}" Header="Comment"/>
</DataGrid.Columns>
</DataGrid>