Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- AssertSection.cs
- RegexParser.cs
- ProviderBase.cs
- MsmqAuthenticationMode.cs
- DataControlImageButton.cs
- LoginStatusDesigner.cs
- BitmapEffectvisualstate.cs
- MetadataUtilsSmi.cs
- ClockGroup.cs
- DescriptionCreator.cs
- ValidationManager.cs
- SizeLimitedCache.cs
- C14NUtil.cs
- XmlBaseWriter.cs
- RemoteWebConfigurationHostServer.cs
- PathGradientBrush.cs
- AnnouncementService.cs
- ToggleButtonAutomationPeer.cs
- CollectionCodeDomSerializer.cs
- KeyFrames.cs
- WindowsBrush.cs
- BitFlagsGenerator.cs
- JsonXmlDataContract.cs
- GeneralTransformGroup.cs
- SamlSecurityToken.cs
- TextStore.cs
- CallbackBehaviorAttribute.cs
- IntegerFacetDescriptionElement.cs
- VScrollProperties.cs
- ArgumentsParser.cs
- ProjectionCamera.cs
- Soap12ServerProtocol.cs
- ZipQueryOperator.cs
- CharacterBuffer.cs
- PrintingPermission.cs
- TrayIconDesigner.cs
- DataList.cs
- DetailsView.cs
- Point4DValueSerializer.cs
- Subtree.cs
- CommandManager.cs
- AttachedPropertyBrowsableAttribute.cs
- Bold.cs
- SourceItem.cs
- DataGridViewCellParsingEventArgs.cs
- BinHexDecoder.cs
- LinqDataSourceValidationException.cs
- WorkflowApplicationUnloadedException.cs
- XPathChildIterator.cs
- PerformanceCounterManager.cs
- ACE.cs
- ServiceOperationParameter.cs
- ExceptionNotification.cs
- DeleteIndexBinder.cs
- Pool.cs
- ResolveRequestResponseAsyncResult.cs
- WindowsListViewSubItem.cs
- SqlNotificationEventArgs.cs
- BaseTemplateCodeDomTreeGenerator.cs
- AdjustableArrowCap.cs
- SmiEventSink.cs
- EntityViewGenerationAttribute.cs
- IndentedWriter.cs
- XmlSchemaSimpleTypeUnion.cs
- SafeWaitHandle.cs
- NetworkAddressChange.cs
- SoapHeaders.cs
- TransportManager.cs
- Wildcard.cs
- ConnectionsZone.cs
- SR.cs
- Module.cs
- ExtenderProvidedPropertyAttribute.cs
- CrossAppDomainChannel.cs
- compensatingcollection.cs
- WorkflowIdleElement.cs
- DateTimeAutomationPeer.cs
- CommandLibraryHelper.cs
- PersistChildrenAttribute.cs
- XmlEventCache.cs
- XPathParser.cs
- ListViewItem.cs
- QueryIntervalOp.cs
- NominalTypeEliminator.cs
- ClientType.cs
- DebugViewWriter.cs
- FragmentQueryKB.cs
- BaseParaClient.cs
- MouseEventArgs.cs
- LocatorBase.cs
- Constraint.cs
- StringToken.cs
- RawStylusInputCustomDataList.cs
- UInt32Storage.cs
- ColorBlend.cs
- ProviderUtil.cs
- ManagedIStream.cs
- ICollection.cs
- RightsManagementEncryptedStream.cs
- XmlQuerySequence.cs