|
Hi guys,,
Im working on an application that retrieves data from an xml fiile to my form using tree view and list view controls...
I wrote the code to populate the employee code in the treeview control and it worked fine then I wrote the code to retrieve the selected employee's data ,that I selected through my treeview,to the list view control I will write down the code here so that u can help me debugging the code to know where the problem is...
here is my code
code to populate the treeview
protected void populateTreeView() { statusBar1.Text =" Refreshing Employees Codes, Please Wait..."; this.Cursor = Cursors.WaitCursor; treeView1.Nodes.Clear(); tvRootNode = new TreeNode("Employees Code"); this.Cursor = Cursors.Default; treeView1.Nodes.Add(tvRootNode); TreeNodeCollection nodeCollect = tvRootNode.Nodes; string val =""; XmlTextReader reader = new XmlTextReader(@"C:\EmpRec.xml"); reader.MoveToElement(); try
{ while ( reader.Read()) { if ( reader.HasAttributes && reader.NodeType == XmlNodeType.Element) { reader.MoveToElement(); reader.MoveToElement(); reader.MoveToAttribute("Id"); val=reader.Value; reader.Read(); reader.Read(); if(reader.Name == "Dept.") { reader.Read(); } TreeNode EcodeNode = new TreeNode(val); nodeCollect.Add(EcodeNode);
} statusBarPanel1.Text = " Click on Employee Code to see the record"; } } catch ( XmlException e) { MessageBox.Show( " Exception : "+ e.Message); } }
then the code to initiate the listview and populate its columns
protected void initializeListControl() {
listView1.Clear(); listView1.Columns.Add("Employee Name ",255,HorizontalAlignment.Left); listView1.Columns.Add("Date Of Join ",70,HorizontalAlignment.Right); listView1.Columns.Add("Grade",105,HorizontalAlignment.Left); listView1.Columns.Add("Salary ",105,HorizontalAlignment.Left);
}
then code to fill the listview with details of choosen employee code
protected void populateListView(TreeNode currNode) { initializeListControl(); XmlTextReader listViewReader = new XmlTextReader(@"C:\Documents and Settings\Administrator.MOSAAD\My Documents\Visual Studio Projects\Employee Records App\EmpRec.xml"); listViewReader.MoveToElement(); while ( listViewReader.Read()) { string nodeName; string nodePath; string name; string dateOfJoin; string grade; string salary; string [] itemsArray = new string[4]; listViewReader.MoveToFirstAttribute(); nodeName = listViewReader.Value; nodePath = currNode.FullPath.Remove(0,17); if ( nodePath == nodeName) { ListViewItem lvi; listViewReader.MoveToNextAttribute(); name = listViewReader.Value; lvi = listView1.Items.Add(name); listViewReader.Read(); listViewReader.Read(); listViewReader.MoveToFirstAttribute(); dateOfJoin = listViewReader.Value; lvi.SubItems.Add(dateOfJoin); listViewReader.MoveToNextAttribute(); grade = listViewReader.Value; lvi.SubItems.Add(grade); listViewReader.MoveToNextAttribute(); salary = listViewReader.Value; lvi.SubItems.Add(salary); listViewReader.MoveToNextAttribute(); listViewReader.MoveToElement(); listViewReader.ReadString();
}
} }
then I added this code to the treeview after select event
private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) { TreeNode currNode = e.Node; if ( tvRootNode == currNode) { initializeListControl(); statusBarPanel1.Text = " Double Click Employee Records .. "; return; } else { statusBarPanel1.Text = " Click Employee code to view Individual Record ...";
} populateListView(currNode);
}
then at last I added this code to the page_load event
private void EmployeeRecordsForm_Load(object sender, System.EventArgs e) { populateTreeView(); initializeListControl(); }
I dont know why when I choose an employee code in treeview it doesnt populate the employee's data in the listview control!!
|