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
- ImportedNamespaceContextItem.cs
- AnimationException.cs
- RemotingException.cs
- MobileUserControl.cs
- UnSafeCharBuffer.cs
- SoapAttributeOverrides.cs
- CodeTypeReference.cs
- SqlEnums.cs
- SqlCachedBuffer.cs
- ZipIOExtraFieldElement.cs
- GifBitmapDecoder.cs
- Helper.cs
- GenericWebPart.cs
- ButtonStandardAdapter.cs
- PropertyDescriptorGridEntry.cs
- safex509handles.cs
- Glyph.cs
- RelatedImageListAttribute.cs
- XmlElement.cs
- TraceHandler.cs
- Documentation.cs
- SubstitutionResponseElement.cs
- CacheDependency.cs
- VirtualPath.cs
- ToolboxItemSnapLineBehavior.cs
- BaseContextMenu.cs
- InternalRelationshipCollection.cs
- DataGridTextBox.cs
- Misc.cs
- Package.cs
- FontFaceLayoutInfo.cs
- ContractMapping.cs
- UnsafeNativeMethods.cs
- QuinticEase.cs
- TransformDescriptor.cs
- ContentPropertyAttribute.cs
- MaskPropertyEditor.cs
- WindowsAuthenticationModule.cs
- EnumerableRowCollectionExtensions.cs
- WebConfigurationFileMap.cs
- TagElement.cs
- PointF.cs
- InvalidCastException.cs
- FileDialogCustomPlaces.cs
- WebBrowserProgressChangedEventHandler.cs
- ReferencedCollectionType.cs
- ObjectNotFoundException.cs
- SmiMetaData.cs
- DataComponentGenerator.cs
- ValidationError.cs
- FileDialogCustomPlace.cs
- BindingCollection.cs
- MediaElementAutomationPeer.cs
- DrawingContext.cs
- CombinedGeometry.cs
- CompressEmulationStream.cs
- InkCanvasAutomationPeer.cs
- AttachedAnnotationChangedEventArgs.cs
- NamespaceExpr.cs
- HyperLinkDesigner.cs
- InkPresenter.cs
- PaintValueEventArgs.cs
- InternalsVisibleToAttribute.cs
- ManagementOperationWatcher.cs
- StylusOverProperty.cs
- FormViewInsertEventArgs.cs
- TreeNodeEventArgs.cs
- StrokeNodeEnumerator.cs
- sqlpipe.cs
- VisualProxy.cs
- CatalogPart.cs
- JoinGraph.cs
- Calendar.cs
- OrderedDictionaryStateHelper.cs
- ApplicationDirectoryMembershipCondition.cs
- Compilation.cs
- DrawingGroup.cs
- RadioButtonList.cs
- clipboard.cs
- InvokeProviderWrapper.cs
- EdmTypeAttribute.cs
- NativeObjectSecurity.cs
- SplashScreen.cs
- HtmlHead.cs
- Mapping.cs
- TextTreeText.cs
- COM2EnumConverter.cs
- MessageQueueInstaller.cs
- ObjectTag.cs
- DataRow.cs
- TypeHelpers.cs
- ListViewGroupConverter.cs
- PlatformCulture.cs
- XmlArrayItemAttribute.cs
- ImageCodecInfoPrivate.cs
- BrowserDefinition.cs
- Screen.cs
- DesignerTextWriter.cs
- AnnotationObservableCollection.cs
- ApplicationGesture.cs