السلام عليكم
قمت بعمل برنامج صغير عبارة عن تطبيق يقرأ من ملف xml البيانات المخزنة به و يقوم بعرض الكود الوظيفي في treeView Control
و المفترض انه حين اختار الكود يقوم بعرض البيانات في الListView Control
و لكن هذا لا يحدث :(
سأرفق الكود و ارجو منكم مساعدتي في عمل debug
هذي الدالة تعرض الكود في ال 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:\Documents and Settings\Administrator.MOSAAD\My Documents\Visual Studio Projects\Employee Records App\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);
}
}و هذي تملا الكولمنز في الlistview
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);
}و الاخيرة المفنرض انها تملا الlistview ببيانات الكود الوظيفي المختار
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();
}
}
}و قمت باضافة هذا الكود للحدث الاتي
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);
}بالاضافة الي هذا الكود في ال Page_Load
private void EmployeeRecordsForm_Load(object sender, System.EventArgs e)
{
populateTreeView();
initializeListControl();
}