Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ColorAnimation.cs
- TableCell.cs
- LinkUtilities.cs
- TextEditor.cs
- WindowShowOrOpenTracker.cs
- DropShadowEffect.cs
- ActiveXContainer.cs
- KnownAssemblyEntry.cs
- SimpleWorkerRequest.cs
- SecurityHeaderTokenResolver.cs
- DiscoveryClientDocuments.cs
- AsyncStreamReader.cs
- StartUpEventArgs.cs
- WindowsTokenRoleProvider.cs
- ProcessHostConfigUtils.cs
- DataView.cs
- ResourceProviderFactory.cs
- ExpressionBuilderContext.cs
- BamlLocalizationDictionary.cs
- PositiveTimeSpanValidator.cs
- GetChildSubtree.cs
- AsymmetricAlgorithm.cs
- NameValueConfigurationElement.cs
- AdapterDictionary.cs
- JpegBitmapEncoder.cs
- SymLanguageType.cs
- CustomSignedXml.cs
- KeyFrames.cs
- Adorner.cs
- BindingCompleteEventArgs.cs
- Cell.cs
- MultiViewDesigner.cs
- KeyboardDevice.cs
- MutableAssemblyCacheEntry.cs
- SessionEndedEventArgs.cs
- DBSqlParserTable.cs
- EntityContainerEmitter.cs
- WMIGenerator.cs
- MethodImplAttribute.cs
- ThreadStaticAttribute.cs
- AttachmentService.cs
- filewebresponse.cs
- InputReferenceExpression.cs
- DesignerGeometryHelper.cs
- IncrementalCompileAnalyzer.cs
- VirtualizedItemProviderWrapper.cs
- HtmlInputControl.cs
- Process.cs
- CacheDependency.cs
- Rect3DConverter.cs
- QuaternionAnimation.cs
- EventListener.cs
- InternalTypeHelper.cs
- recordstate.cs
- CheckBoxRenderer.cs
- UDPClient.cs
- WindowsFormsEditorServiceHelper.cs
- OutputCacheSettingsSection.cs
- LinearQuaternionKeyFrame.cs
- HttpCookieCollection.cs
- VirtualizingStackPanel.cs
- RemoteWebConfigurationHostStream.cs
- OdbcCommand.cs
- SqlBulkCopyColumnMapping.cs
- webeventbuffer.cs
- sortedlist.cs
- TransformDescriptor.cs
- WindowPattern.cs
- SecurityTokenValidationException.cs
- CellLabel.cs
- ToolboxBitmapAttribute.cs
- XmlEntityReference.cs
- Vector.cs
- CodeCastExpression.cs
- CannotUnloadAppDomainException.cs
- PluralizationService.cs
- AnnotationComponentManager.cs
- ImmComposition.cs
- HttpInputStream.cs
- ButtonBase.cs
- BindingSourceDesigner.cs
- HostedTransportConfigurationManager.cs
- ThreadAbortException.cs
- FunctionDetailsReader.cs
- GAC.cs
- PageMediaType.cs
- CodeCompiler.cs
- ExeContext.cs
- SystemMulticastIPAddressInformation.cs
- Pen.cs
- ResourceDictionary.cs
- ElementFactory.cs
- VectorAnimationUsingKeyFrames.cs
- Matrix.cs
- MatrixStack.cs
- DoubleCollection.cs
- MsmqPoisonMessageException.cs
- DelegatingMessage.cs
- _LocalDataStoreMgr.cs
- KeyConverter.cs