private void OnNodeRemovedFromTree(XmlNode node, XmlNode oldParent)
{
XmlBoundElement oldRowElem;
// Synchronize values from old region
if (_mapper.GetRegion(oldParent, out oldRowElem))
SynchronizeRowFromRowElement(oldRowElem);
// Disconnect all regions, starting w/ node (if it is a row-elem)
XmlBoundElement rowElem = node as XmlBoundElement;
if (rowElem != null && rowElem.Row != null)
EnsureDisconnectedDataRow(rowElem);
TreeIterator iter = new TreeIterator(node);
for (bool fMore = iter.NextRowElement(); fMore; fMore = iter.NextRowElement())
{
rowElem = (XmlBoundElement)(iter.CurrentNode);
EnsureDisconnectedDataRow(rowElem);
}
// Assert that all sub-regions are disconnected
AssertNonLiveRows(node);
}
// Node was removed from the disconnected tree to disconnected tree