Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebControls / XmlDataSourceView.cs / 1305376 / XmlDataSourceView.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing.Design; using System.Text; using System.Web; using System.Web.UI; using System.Xml; ////// public sealed class XmlDataSourceView : DataSourceView { private XmlDataSource _owner; ////// Creates a new instance of XmlDataSourceView. /// public XmlDataSourceView(XmlDataSource owner, string name) : base(owner, name) { _owner = owner; } ////// Returns all the rows of the datasource. /// protected internal override IEnumerable ExecuteSelect(DataSourceSelectArguments arguments) { arguments.RaiseUnsupportedCapabilitiesError(this); XmlNode root = _owner.GetXmlDocument(); XmlNodeList nodes = null; if (_owner.XPath.Length != 0) { // If an XPath is specified on the control, use it nodes = root.SelectNodes(_owner.XPath); } else { // Otherwise, get all the children of the root nodes = root.SelectNodes("/node()/node()"); } return new XmlDataSourceNodeDescriptorEnumeration(nodes); } public IEnumerable Select(DataSourceSelectArguments arguments) { return ExecuteSelect(arguments); } private class XmlDataSourceNodeDescriptorEnumeration : ICollection { private XmlNodeList _nodes; private int _count = -1; // -1 indicates we have not yet calculated the count public XmlDataSourceNodeDescriptorEnumeration(XmlNodeList nodes) { Debug.Assert(nodes != null, "Did not expect null node list"); _nodes = nodes; } IEnumerator IEnumerable.GetEnumerator() { foreach (XmlNode node in _nodes) { if (node.NodeType == XmlNodeType.Element) { yield return new XmlDataSourceNodeDescriptor(node); } } } int ICollection.Count { get { if (_count == -1) { // If the count has not yet been set, calculate the element count _count = 0; foreach (XmlNode node in _nodes) { if (node.NodeType == XmlNodeType.Element) { _count++; } } } return _count; } } bool ICollection.IsSynchronized { get { return false; } } object ICollection.SyncRoot { get { return null; } } void ICollection.CopyTo(Array array, int index) { for (IEnumerator e = ((IEnumerable)this).GetEnumerator(); e.MoveNext(); ) { array.SetValue(e.Current, index++); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing.Design; using System.Text; using System.Web; using System.Web.UI; using System.Xml; ////// public sealed class XmlDataSourceView : DataSourceView { private XmlDataSource _owner; ////// Creates a new instance of XmlDataSourceView. /// public XmlDataSourceView(XmlDataSource owner, string name) : base(owner, name) { _owner = owner; } ////// Returns all the rows of the datasource. /// protected internal override IEnumerable ExecuteSelect(DataSourceSelectArguments arguments) { arguments.RaiseUnsupportedCapabilitiesError(this); XmlNode root = _owner.GetXmlDocument(); XmlNodeList nodes = null; if (_owner.XPath.Length != 0) { // If an XPath is specified on the control, use it nodes = root.SelectNodes(_owner.XPath); } else { // Otherwise, get all the children of the root nodes = root.SelectNodes("/node()/node()"); } return new XmlDataSourceNodeDescriptorEnumeration(nodes); } public IEnumerable Select(DataSourceSelectArguments arguments) { return ExecuteSelect(arguments); } private class XmlDataSourceNodeDescriptorEnumeration : ICollection { private XmlNodeList _nodes; private int _count = -1; // -1 indicates we have not yet calculated the count public XmlDataSourceNodeDescriptorEnumeration(XmlNodeList nodes) { Debug.Assert(nodes != null, "Did not expect null node list"); _nodes = nodes; } IEnumerator IEnumerable.GetEnumerator() { foreach (XmlNode node in _nodes) { if (node.NodeType == XmlNodeType.Element) { yield return new XmlDataSourceNodeDescriptor(node); } } } int ICollection.Count { get { if (_count == -1) { // If the count has not yet been set, calculate the element count _count = 0; foreach (XmlNode node in _nodes) { if (node.NodeType == XmlNodeType.Element) { _count++; } } } return _count; } } bool ICollection.IsSynchronized { get { return false; } } object ICollection.SyncRoot { get { return null; } } void ICollection.CopyTo(Array array, int index) { for (IEnumerator e = ((IEnumerable)this).GetEnumerator(); e.MoveNext(); ) { array.SetValue(e.Current, index++); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Funcletizer.cs
- UnescapedXmlDiagnosticData.cs
- UrlAuthorizationModule.cs
- EntityDataSourceSelectedEventArgs.cs
- HtmlTableCellCollection.cs
- SrgsRuleRef.cs
- BindingExpression.cs
- StringToken.cs
- SystemGatewayIPAddressInformation.cs
- EntityException.cs
- XmlSchemaAny.cs
- SymbolMethod.cs
- UnicastIPAddressInformationCollection.cs
- AspCompat.cs
- CodeDirectoryCompiler.cs
- DesignTimeTemplateParser.cs
- Wizard.cs
- invalidudtexception.cs
- PKCS1MaskGenerationMethod.cs
- DataGridViewRowCancelEventArgs.cs
- JoinGraph.cs
- InputBindingCollection.cs
- UrlPropertyAttribute.cs
- Model3D.cs
- ByteStreamGeometryContext.cs
- FaultPropagationRecord.cs
- HybridDictionary.cs
- Pair.cs
- TreeNodeEventArgs.cs
- Connector.cs
- NonVisualControlAttribute.cs
- LoginDesigner.cs
- XamlPoint3DCollectionSerializer.cs
- Win32.cs
- SchemaReference.cs
- WebHttpBinding.cs
- CachedFontFamily.cs
- TreeBuilder.cs
- PolicyException.cs
- TransformerInfoCollection.cs
- ControlPropertyNameConverter.cs
- DbConnectionStringBuilder.cs
- Slider.cs
- XmlSchema.cs
- ScriptServiceAttribute.cs
- SqlIdentifier.cs
- CursorConverter.cs
- ReadOnlyHierarchicalDataSource.cs
- IRCollection.cs
- SmtpMail.cs
- PaintValueEventArgs.cs
- ToolStripLocationCancelEventArgs.cs
- CompositeActivityDesigner.cs
- ZipIOFileItemStream.cs
- SpeechRecognitionEngine.cs
- DetailsViewDeletedEventArgs.cs
- AuthenticateEventArgs.cs
- DrawTreeNodeEventArgs.cs
- Compiler.cs
- DesignerAutoFormatStyle.cs
- DiscreteKeyFrames.cs
- ObjectStateFormatter.cs
- ValidationErrorCollection.cs
- SimpleLine.cs
- Stacktrace.cs
- JapaneseLunisolarCalendar.cs
- RepeatButton.cs
- DurationConverter.cs
- NonBatchDirectoryCompiler.cs
- InternalException.cs
- DotAtomReader.cs
- TransferRequestHandler.cs
- StructureChangedEventArgs.cs
- TypeListConverter.cs
- ObjRef.cs
- XomlCompilerHelpers.cs
- ZoneLinkButton.cs
- RequestReplyCorrelator.cs
- PropVariant.cs
- ValidatorCollection.cs
- XhtmlConformanceSection.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- SqlTriggerContext.cs
- SmiContextFactory.cs
- UserInitiatedRoutedEventPermission.cs
- DataGridViewLayoutData.cs
- SimpleLine.cs
- ZeroOpNode.cs
- PathTooLongException.cs
- BamlLocalizableResourceKey.cs
- DetailsViewRowCollection.cs
- Storyboard.cs
- EventBuilder.cs
- PrivateFontCollection.cs
- ColorMap.cs
- WebPartMovingEventArgs.cs
- TextEditorMouse.cs
- DefaultSection.cs
- FixedSOMFixedBlock.cs
- FixedMaxHeap.cs