|
|
|
Similar ArticlesMost ReadTop RatedLatest
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This article has been
excerpted from book "A Programmer's Guide to ADO.NET in C#".
The XmlDataDocument events are useful when your application needs to notify you
when changes are being made to an XmlDataDocument object. XmlDocument defines
XmlDataDocument events (see Table 9-6).
Table 9-6. XmlDataDocument Events
EVENT |
DESCRIPTION |
NodeChanged |
Occurs when the
value of a node has been changed |
NodeChanging |
Occurs when the
value of a node is changing |
NodeInserted |
Occurs when a node
inserted into another node |
NodeInserting |
Occurs when a node
inserting to another node |
NodeRemove |
Occurs when a node
has been removed |
NodeRemoving |
Occurs when a node
is being removed |
The XmlNodeChangedEventHandler method handles the events listed in Table 9-6.
The XmlNodeChangedEventHandler is as follows:
public delegate
void
XmlNodeChangedEventHandler(object sender, XmlNodeChangedEventArgs
e);
Where sender is the source of the event and e is an XmlNodeChangedEventArgs that
contains the event data. XmlNodeChangedEventArgs defines properties (see Table
9-7).
Table 9-7. The XmlNodeChangedEventArgs properties
PROPERTY |
DESCRIPTION |
Action |
Returns a value
indicating the type of node changed event |
NewParent |
Returns a value of
parent node after the operation is finished |
Node |
Returns the node
that is being added, removed, or changed |
OldParent |
Returns the value
of the parent node before operation started |
Listing 9-11. Handles XmlDataDocument events. The XmlDocumentBtn_Click method
creates event handlers for the NodeChanged, NodeInserted, and NodeRemoved
events. The MyNodeChangedEvent, MyNodeInsertEvent, and MyNodeRemoved event
handlers execute when these events fire. I used LoadXml to load an XML fragment
and then used the ReplaceChild and RemoveChild methods to replace and remove
document nodes.
Listing 9-11. The XmlDataDocument event handling sample
private void
XmlDocumentBtn_Click(object sender, System.EventArgs
e) { XmlDocument
xmlDoc = new
XmlDocument(); xmlDoc.LoadXml("<Record>
Some Value </Record>");
// Create the event handlers. xmlDoc.NodeChanged
+= new
XmlNodeChangedEventHandler(this.MyNodeChangedEvent); xmlDoc.NodeInserted += new
XmlNodeChangedEventHandler(this.MyNodeInsertedEvent); xmlDoc.NodeRemoved
+= new
XmlNodeChangedEventHandler(this.MyNodeRemovedEvent); XmlElement root = xmlDoc.DocumentElement; string str = root.ToString(); XmlDocumentFragment xmlDocFragment = xmlDoc.CreateDocumentFragment(); xmlDocFragment.InnerXml = "<Fragment><SomeDate>Fragment
Data</SomeDate></Fragment>";
//
Replace Node XmlElement rootNode = xmlDoc.DocumentElement; rootNode.ReplaceChild(xmlDocFragment, rootNode.LastChild);
//Remove Node XmlNode node = xmlDoc.LastChild; xmlDoc.RemoveChild(node); }
Listing 9-12. Shows the NodeChangedEvent handler. The Node property of
XmlNodeChangedEventArgs returns XmlNode. Using the Node property you can get
more information about a node such as its parent node, value, name, namespace,
and so on.
Listing 9-12. The NodeChanged event handler
public void
MyNodeChangedEvent(object src,
XmlNodeChangedEventArgs args) { MessageBox.Show ("Node
Changed Event Fired for node " + args.Node.Name); if (args.Node.Value !=
null) { MessageBox.Show(args.Node.Value); } }
Similar to listing 9-12, Listing 9-13 and 9-14 show event handlers for the
NodeInserted and NodeRemoved events.
Listing 9-13. The NodeInserted event handler
public void
MyNodeInsertedEvent(object src, XmlNodeChangedEventArgs args) { MessageBox.Show ("Node
Inserted event fired for node " + args.Node.Name);
if (args.Node.Value !=
null) { MessageBox.Show(args.Node.Value); } }
Listing 9-14.The NodeRemoved event handler
public void
MyNodeRemovedEvent(object src, XmlNodeChangedEventArgs args) { MessageBox.Show ("Node
Removed event fired for node " + args.Node.Name); if (args.Node.Value !=
null) { MessageBox.Show(args.Node.Value); } }
Conclusion
Hope this article would have helped you in understanding
working
with XmlDataDocument Events in ADO.NET.
See other articles on
the website also for further reference.

|
This essential guide
to Microsoft's ADO.NET overviews C#, then leads you toward deeper
understanding of ADO.NET. |
|