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
- CodeDirectiveCollection.cs
- HtmlTableRowCollection.cs
- ComPlusTypeLoader.cs
- DefaultPropertyAttribute.cs
- ZipIOCentralDirectoryBlock.cs
- HtmlForm.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- _Events.cs
- DataBoundLiteralControl.cs
- LongValidatorAttribute.cs
- ResourceKey.cs
- HtmlImage.cs
- ArgumentException.cs
- TemplateControlParser.cs
- VarRemapper.cs
- AssemblyBuilderData.cs
- Variable.cs
- HTMLTextWriter.cs
- ZoneLinkButton.cs
- TableRowGroup.cs
- XamlVector3DCollectionSerializer.cs
- IdentityManager.cs
- PanelDesigner.cs
- TypedReference.cs
- SubclassTypeValidatorAttribute.cs
- MaterialGroup.cs
- XsdDateTime.cs
- FormatSelectingMessageInspector.cs
- WindowsListViewItemStartMenu.cs
- COSERVERINFO.cs
- ObjectDataSourceStatusEventArgs.cs
- ModuleConfigurationInfo.cs
- Item.cs
- ProxyGenerationError.cs
- ImageSource.cs
- DrawingVisual.cs
- DoubleCollectionConverter.cs
- DeploymentExceptionMapper.cs
- codemethodreferenceexpression.cs
- ConstraintConverter.cs
- HttpApplicationFactory.cs
- XmlCharType.cs
- Italic.cs
- ClientSettings.cs
- SetStateDesigner.cs
- ConnectionManagementSection.cs
- ScrollBar.cs
- MetadataArtifactLoaderCompositeFile.cs
- SQLBytesStorage.cs
- ReadOnlyCollection.cs
- OdbcReferenceCollection.cs
- CopyAction.cs
- RC2.cs
- List.cs
- BookmarkOptionsHelper.cs
- ConfigXmlComment.cs
- HttpCapabilitiesEvaluator.cs
- TraversalRequest.cs
- LayoutTable.cs
- ToolStripItemRenderEventArgs.cs
- ReadContentAsBinaryHelper.cs
- StringArrayConverter.cs
- DynamicUpdateCommand.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- BackStopAuthenticationModule.cs
- Site.cs
- NonSerializedAttribute.cs
- CompiledRegexRunner.cs
- WriteableBitmap.cs
- DurationConverter.cs
- BinarySerializer.cs
- GACIdentityPermission.cs
- ListItemConverter.cs
- PasswordRecoveryDesigner.cs
- TcpHostedTransportConfiguration.cs
- IgnoreFlushAndCloseStream.cs
- CopyCodeAction.cs
- PropertyOrder.cs
- AspCompat.cs
- BackgroundFormatInfo.cs
- FontStretchConverter.cs
- AdditionalEntityFunctions.cs
- SatelliteContractVersionAttribute.cs
- LineMetrics.cs
- CookielessHelper.cs
- TransactionScope.cs
- TextServicesCompartmentContext.cs
- ProcessHostFactoryHelper.cs
- XmlAutoDetectWriter.cs
- ObfuscationAttribute.cs
- SecurityTokenAttachmentMode.cs
- WebBrowserUriTypeConverter.cs
- DependencyPropertyConverter.cs
- ComponentEditorPage.cs
- XmlRawWriter.cs
- SubstitutionList.cs
- ValidateNames.cs
- QueryOperationResponseOfT.cs
- ScheduleChanges.cs
- UpdateManifestForBrowserApplication.cs