Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Microsoft C# Professional Projects - Premier Press.pdf
Скачиваний:
177
Добавлен:
24.05.2014
Размер:
14.65 Mб
Скачать

312 Project 2 CREATING THE EMPLOYEE RECORDS SYSTEM PROJECT

In this chapter, you will learn to add nodes to the tree view and items to the list view programmatically. You will also learn to read contents of an XML file. You

will build the Employee Records System application.

Populating the TreeView Control

In order to build the application, the first task you need to complete is populating the TreeView control. You have inserted a TreeView control in the form. However, the TreeView control does not contain any nodes. Now you will learn to add nodes to the control programmatically.

In order to add a node, you first need to initialize a new instance of the TreeNode class. Calling the constructor of the TreeNode class enables you to achieve this.The constructor of the TreeNode class is overloaded, as explained in Table 14-1.

Table 14-1 TreeNode Class Constructors

Constructor Description

public TreeNode();

Initializes a new instance of the TreeNode

 

class

public TreeNode(string);

Initializes a new instance of the TreeNode

 

class with the specified label text

public TreeNode(string, TreeNode[]);

Initializes a new instance of the TreeNode

 

class with the specified label text and

 

child tree nodes

public TreeNode(string, int, int);

Initializes a new instance of the TreeNode

 

class with the specified label text and

 

images to be displayed in selected and

 

unselected state

public TreeNode(string, int, int, TreeNode[]);

Initializes a new instance of the TreeNode

 

class with the specified label text, child

 

tree nodes, and images to be displayed in

 

selected and unselected state

 

 

IMPLEMENTING THE BUSINESS LOGIC

Chapter 14

313

 

 

 

 

Displaying Employee Codes in the TreeView Control

You can add a node to the TreeView control using the Add method, as follows:

treeview1.Nodes.Add(new TreeNode(“Root Node”)

In this code, treeview1 refers to the TreeView control. The Nodes collection contains all child nodes of a particular parent node. The Add method of the TreeNodeCollection class enables you to add nodes to the collection. For example, the following code explains the manner in which you can add a node with the display

text “My Computer”.

tnRootNode = new TreeNode(“My Computer”); tvFolderView.Nodes.Add(tnRootNode);

The previous code assumes that you have added a TreeView control to the form.

The first task that you need to accomplish is to open the XML data store and read the employee records. You will learn about XML in Chapter 17,“Interacting with a Microsoft Word Document and Event Viewer.” The .NET Framework class library provides you with the XmlTextReader class that helps you access a stream of XML data in a fast and noncached manner. I will be using the XmlTextReader class to read the EmpRec.xml file. You have created the EmpRec.xml file in Chapter 13, “Project Case Study and Design.”

The XmlTextReader represents a reader that is advanced using the read methods and properties of the current node. Table 14-2 lists some of the commonly used properties of the XmlTextReader class.

Table 14-2 Properties of the XmlTextReader Class

Properties

Description

EOF

Indicates whether the reader is positioned at the end of the XML stream

HasAttributes

Indicates whether current node has any attributes

HasValue

Indicates whether current node has any value

Item

Obtains the value of the attribute

LineNumber

Gets the current line number of the reader

LinePosition

Gets the current position of the reader in the line specified

Name

Gets the name of the current node

ReadState

Gets the state of the reader

Value

Gets the text value of the current node

 

 

314 Project 2 CREATING THE EMPLOYEE RECORDS SYSTEM PROJECT

Table 14-3 lists some of the commonly used properties of the XmlTextReader class.

Table 14-3 Methods of the XmlTextReader Class

Methods

Description

Close

Changes the ReadState to closed

GetAttribute

Gets the value of an attribute

MoveToAttribute

Moves to the specified attribute

MoveToContent

Checks whether the current node is a content node; if

 

not, the reader skips to the next node

MoveToElement

Moves to the element that contains the current attribute

 

node

MoveToFirstAttribute

Moves to the first attribute

MoveToNextAttribute

Moves to the next attribute

Read

Reads the next node fr om the stream

ReadAttributeValue

Parses the attribute value into one or more Text,

 

EntityReference, or EndEntity nodes

ReadInnerXml

Reads all the content, including markup, as a string

ReadOuterXml

Reads the content, including markup, representing the

 

current node and its child nodes

ReadString

Reads the contents of an element or a text node as a

 

string

Skip

Skips the children of the current node

ToString

Returns a string that represents the current object

 

 

Now you need to read the employee codes from the EmpRec.xml file and display them in the tree view control.

You can open the XML file by initializing the XMLTextReader class, as follows:

XmlTextReader reader= new XmlTextReader (“E:\\BookProj\\EmpRec.xml”);

where e:\BookProj\EmpRec.xml represents the path on your hard disk where the EmpRec.xml file is stored.

IMPLEMENTING THE BUSINESS LOGIC

Chapter 14

315

 

 

 

 

I have written the entire code for populating the TreeView control inside a function, PopulateTreeView, as given below.

protected void PopulateTreeView()

{

statusBarPanel1.Text=”Refreshing Employee Codes. Please wait...”; this.Cursor = Cursors.WaitCursor;

treeView1.Nodes.Clear();

tvRootNode=new TreeNode(“Employee Records”); this.Cursor = Cursors.Default; treeView1.Nodes.Add(tvRootNode);

TreeNodeCollection nodeCollect = tvRootNode.Nodes; string strVal=””;

XmlTextReader reader= new XmlTextReader(“E:\\BookProj\\EmpRec.xml”);

reader.MoveToElement(); try

{

while(reader.Read())

{

if(reader.HasAttributes && reader.NodeType==XmlNodeType.Element)

{

reader.MoveToElement(); reader.MoveToElement(); reader.MoveToAttribute(“Id”); strVal=reader.Value; reader.Read(); reader.Read();

if(reader.Name==”Dept”)

{

reader.Read();

}

//create the child nodes

TreeNode EcodeNode = new TreeNode(strVal);