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
- GeneratedCodeAttribute.cs
- EventBookmark.cs
- CatalogZone.cs
- HandleCollector.cs
- CodeConstructor.cs
- PropertyEmitter.cs
- PrePostDescendentsWalker.cs
- DataGridViewDataErrorEventArgs.cs
- DPAPIProtectedConfigurationProvider.cs
- ValueTypeFixupInfo.cs
- UrlPropertyAttribute.cs
- ConfigurationElementProperty.cs
- Win32Exception.cs
- Model3DGroup.cs
- TextTreeDeleteContentUndoUnit.cs
- DetailsViewRow.cs
- StaticExtension.cs
- baseshape.cs
- EventHandlerService.cs
- DetailsViewInsertedEventArgs.cs
- ReadOnlyCollection.cs
- TextServicesPropertyRanges.cs
- ClassData.cs
- AnnotationComponentManager.cs
- LineBreak.cs
- HostProtectionPermission.cs
- CalendarButtonAutomationPeer.cs
- ExtensionQuery.cs
- Tablet.cs
- PointLight.cs
- Reference.cs
- TreeViewTemplateSelector.cs
- DataGridViewCellMouseEventArgs.cs
- JapaneseLunisolarCalendar.cs
- ProcessManager.cs
- DataSourceView.cs
- NullableFloatSumAggregationOperator.cs
- OutputScope.cs
- ViewCellRelation.cs
- UpdateManifestForBrowserApplication.cs
- CursorConverter.cs
- DateTimePicker.cs
- AnimatedTypeHelpers.cs
- TextRangeSerialization.cs
- ThicknessConverter.cs
- DefaultTraceListener.cs
- ButtonAutomationPeer.cs
- BuildProvider.cs
- CrossSiteScriptingValidation.cs
- ClientBuildManager.cs
- DefaultBinder.cs
- ScriptingRoleServiceSection.cs
- InputProviderSite.cs
- InertiaExpansionBehavior.cs
- InstanceData.cs
- TypeConstant.cs
- LogLogRecordHeader.cs
- ExtensionQuery.cs
- ScrollBarAutomationPeer.cs
- X509ImageLogo.cs
- XmlILTrace.cs
- DragEventArgs.cs
- SignedXml.cs
- WhitespaceSignificantCollectionAttribute.cs
- GeometryDrawing.cs
- TemplateDefinition.cs
- ConfigurationSectionGroup.cs
- CompositeActivityValidator.cs
- NestPullup.cs
- ProfilePropertySettings.cs
- ProfileSection.cs
- DataGridColumnStyleMappingNameEditor.cs
- SystemFonts.cs
- XsltContext.cs
- ListViewInsertionMark.cs
- LazyTextWriterCreator.cs
- InputBindingCollection.cs
- TextBoxRenderer.cs
- HScrollProperties.cs
- KeyConverter.cs
- OperatingSystem.cs
- QueueProcessor.cs
- HostedController.cs
- BinaryReader.cs
- FlowLayout.cs
- XmlnsCache.cs
- SByte.cs
- SmiContext.cs
- Image.cs
- SettingsSection.cs
- PagedControl.cs
- LogLogRecordHeader.cs
- ShapeTypeface.cs
- OdbcException.cs
- CompilationSection.cs
- FloatAverageAggregationOperator.cs
- StylusPointPropertyInfoDefaults.cs
- BindingList.cs
- XPathParser.cs
- DataSet.cs