Exemple #1
0
        // Returns the row element of the region that the pointer points into
        private XmlBoundElement?GetRowElement()
        {
            XmlBoundElement?rowElem;

            if (_column != null)
            {
                rowElem = _node as XmlBoundElement;
                Debug.Assert(rowElem != null);
                Debug.Assert(rowElem.Row != null);
                return(rowElem);
            }

            DataSetMapper.GetRegion(_node, out rowElem);
            return(rowElem);
        }
        internal bool NextInitialTextLikeNodes(out string value)
        {
            Debug.Assert(CurrentNode != null);
            Debug.Assert(CurrentNode.NodeType == XmlNodeType.Element);
#if DEBUG
            // It's not OK to try to read the initial text value for sub-regions, because we do not know how to revert their initial state
            if (CurrentNode.NodeType == XmlNodeType.Element && DataSetMapper.GetTableSchemaForElement((XmlElement)(CurrentNode)) != null)
            {
                if (CurrentNode != _rowElement)
                {
                    Debug.Fail("Reading the initial text value for sub-regions.");
                }
            }
#endif

            ElementState oldState = _rowElement.ElementState;

            // We do not want to cause any foliation w/ this iterator or use this iterator once the region was defoliated
            Debug.Assert(oldState != ElementState.None);

            XmlNode?n = CurrentNode.FirstChild;
            value = GetInitialTextFromNodes(ref n);
            if (n == null)
            {
                // If we have been defoliated, we should have stayed that way
                Debug.Assert((oldState == ElementState.Defoliated) ? (_rowElement.ElementState == ElementState.Defoliated) : true);

                // Rollback eventual foliation
                _rowElement.ElementState = oldState;
                return(NextRight());
            }
            Debug.Assert(!XmlDataDocument.IsTextLikeNode(n));
            _currentNode = n;

            // If we have been defoliated, we should have stayed that way
            Debug.Assert((oldState == ElementState.Defoliated) ? (_rowElement.ElementState == ElementState.Defoliated) : true);

            // Rollback eventual foliation
            _rowElement.ElementState = oldState;
            return(true);
        }
 internal BaseRegionIterator(DataSetMapper mapper) : base(mapper)
 {
 }
Exemple #4
0
 internal BaseRegionIterator(DataSetMapper mapper) : base(mapper) { }
Exemple #5
0
 private void Init()
 {
     _pointers = new Hashtable();
     _countAddPointer = 0;
     _columnChangeList = new ArrayList();
     _ignoreDataSetEvents = false;
     _isFoliationEnabled = true;
     _optimizeStorage = true;
     _fDataRowCreatedSpecial = false;
     _autoFoliationState = ElementState.StrongFoliation;
     _fAssociateDataRow = true; //this needs to be true for newly created elements should have associated datarows
     _mapper = new DataSetMapper();
     _foliationLock = new object();
     _ignoreXmlEvents = true;
     _attrXml = CreateAttribute("xmlns", "xml", XPathNodePointer.StrReservedXmlns);
     _attrXml.Value = XPathNodePointer.StrReservedXml;
     _ignoreXmlEvents = false;
 }
 internal BaseTreeIterator(DataSetMapper mapper)
 {
     this.mapper = mapper;
 }
 internal BaseTreeIterator(DataSetMapper mapper)
 {
     this.mapper = mapper;
 }