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
- FormViewCommandEventArgs.cs
- UnhandledExceptionEventArgs.cs
- TableLayoutStyleCollection.cs
- TextServicesHost.cs
- TypeTypeConverter.cs
- Wildcard.cs
- RecognizerBase.cs
- ContainerUIElement3D.cs
- PerformanceCounterPermissionAttribute.cs
- DocumentationServerProtocol.cs
- HttpModuleCollection.cs
- ConnectionsZone.cs
- IconConverter.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- ListViewGroup.cs
- CompoundFileDeflateTransform.cs
- DetailsViewPageEventArgs.cs
- ControlDesigner.cs
- RemotingConfigParser.cs
- CachedRequestParams.cs
- XmlRawWriter.cs
- TypographyProperties.cs
- ProcessProtocolHandler.cs
- TripleDES.cs
- COM2ComponentEditor.cs
- updateconfighost.cs
- ByteAnimationUsingKeyFrames.cs
- CrossAppDomainChannel.cs
- QueryAccessibilityHelpEvent.cs
- XslException.cs
- EdmSchemaAttribute.cs
- EncoderExceptionFallback.cs
- MgmtResManager.cs
- DefaultShape.cs
- AnnotationStore.cs
- xmlsaver.cs
- OdbcCommand.cs
- StyleBamlRecordReader.cs
- ScrollableControl.cs
- __Filters.cs
- URLString.cs
- HttpRuntime.cs
- NumberSubstitution.cs
- SessionKeyExpiredException.cs
- DocumentAutomationPeer.cs
- XNameTypeConverter.cs
- WindowsFont.cs
- BaseUriWithWildcard.cs
- IdentityReference.cs
- adornercollection.cs
- DateTimeFormat.cs
- Not.cs
- lengthconverter.cs
- CryptoStream.cs
- ItemDragEvent.cs
- InfiniteTimeSpanConverter.cs
- HelpHtmlBuilder.cs
- UnitySerializationHolder.cs
- PcmConverter.cs
- GraphicsState.cs
- DefaultTextStore.cs
- EnvironmentPermission.cs
- ChannelSinkStacks.cs
- Soap.cs
- InvariantComparer.cs
- SerializableAttribute.cs
- CreateUserWizardStep.cs
- SizeAnimation.cs
- IDReferencePropertyAttribute.cs
- ButtonBaseAdapter.cs
- MethodBuilder.cs
- AudioException.cs
- NetStream.cs
- FlowDocumentPageViewerAutomationPeer.cs
- Enlistment.cs
- QilTypeChecker.cs
- ListMarkerSourceInfo.cs
- OracleConnectionFactory.cs
- DesignOnlyAttribute.cs
- DynamicMethod.cs
- DataControlLinkButton.cs
- DataPagerFieldCollection.cs
- HttpCookieCollection.cs
- OutputCacheProfileCollection.cs
- PathFigureCollectionValueSerializer.cs
- PlainXmlWriter.cs
- TableRowGroup.cs
- ScrollChangedEventArgs.cs
- NotifyIcon.cs
- TextControl.cs
- GroupByExpressionRewriter.cs
- HistoryEventArgs.cs
- VirtualDirectoryMappingCollection.cs
- OptimalBreakSession.cs
- DelegateBodyWriter.cs
- ComponentChangingEvent.cs
- EntryPointNotFoundException.cs
- UserThread.cs
- MemoryStream.cs
- Attributes.cs