Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / UI / WebControls / XmlDataSourceView.cs / 1 / 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.Security.Permissions; using System.Text; using System.Web; using System.Web.UI; using System.Xml; ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 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.Security.Permissions; using System.Text; using System.Web; using System.Web.UI; using System.Xml; ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 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
- ISFClipboardData.cs
- UITypeEditors.cs
- ConfigurationException.cs
- HttpCapabilitiesBase.cs
- HttpFormatExtensions.cs
- XmlNamespaceDeclarationsAttribute.cs
- HtmlElementCollection.cs
- CodeGeneratorOptions.cs
- SqlDuplicator.cs
- TrustManagerPromptUI.cs
- SecurityDocument.cs
- Annotation.cs
- TouchDevice.cs
- XPathItem.cs
- CatalogPartChrome.cs
- InvalidAsynchronousStateException.cs
- FaultPropagationRecord.cs
- ThemeInfoAttribute.cs
- GeometryValueSerializer.cs
- ScriptHandlerFactory.cs
- AuthenticatingEventArgs.cs
- SizeF.cs
- RuleSettingsCollection.cs
- SafeEventLogWriteHandle.cs
- Application.cs
- DelegateTypeInfo.cs
- RectAnimation.cs
- AspNetHostingPermission.cs
- FocusTracker.cs
- XMLSyntaxException.cs
- HandlerFactoryCache.cs
- PersonalizationState.cs
- ApplicationBuildProvider.cs
- QueryContext.cs
- Canvas.cs
- ListBoxDesigner.cs
- compensatingcollection.cs
- VBIdentifierNameEditor.cs
- GestureRecognizer.cs
- TextEditorSelection.cs
- FillBehavior.cs
- AdornerLayer.cs
- UserControl.cs
- DefaultObjectMappingItemCollection.cs
- UTF7Encoding.cs
- MessageSecurityOverTcp.cs
- COMException.cs
- GroupItemAutomationPeer.cs
- TableLayoutColumnStyleCollection.cs
- DSASignatureDeformatter.cs
- HotCommands.cs
- InvalidEnumArgumentException.cs
- InputLanguage.cs
- HelpInfo.cs
- Ops.cs
- DesignerActionGlyph.cs
- Int16AnimationBase.cs
- DependencyObjectValidator.cs
- WebResourceUtil.cs
- ThreadPool.cs
- CredentialCache.cs
- ZipIOExtraFieldZip64Element.cs
- HttpsTransportElement.cs
- PrinterUnitConvert.cs
- QueryRewriter.cs
- RequestResizeEvent.cs
- figurelength.cs
- DurableTimerExtension.cs
- RegistrySecurity.cs
- TimerTable.cs
- HostingPreferredMapPath.cs
- DataSourceControlBuilder.cs
- IdentityReference.cs
- MessageEventSubscriptionService.cs
- TextProperties.cs
- ZipIOCentralDirectoryBlock.cs
- WebBrowserPermission.cs
- EncoderExceptionFallback.cs
- SapiRecoContext.cs
- ASCIIEncoding.cs
- CompositionTarget.cs
- XmlAttributes.cs
- SQLBoolean.cs
- ControlValuePropertyAttribute.cs
- MemoryMappedView.cs
- WebPartConnectVerb.cs
- SoapIgnoreAttribute.cs
- XsltSettings.cs
- Mapping.cs
- AudioBase.cs
- PropertyEmitter.cs
- SectionXmlInfo.cs
- AnonymousIdentificationSection.cs
- VersionPair.cs
- HttpListenerResponse.cs
- BooleanSwitch.cs
- Int64Animation.cs
- ColorBuilder.cs
- MediaPlayerState.cs
- PipeStream.cs