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
- SqlVersion.cs
- IsolatedStorageFileStream.cs
- MediaScriptCommandRoutedEventArgs.cs
- SmtpNegotiateAuthenticationModule.cs
- PinnedBufferMemoryStream.cs
- NamedPipeAppDomainProtocolHandler.cs
- IPPacketInformation.cs
- ImageMap.cs
- DataGridViewCellCancelEventArgs.cs
- FilteredAttributeCollection.cs
- SqlCaseSimplifier.cs
- RowSpanVector.cs
- itemelement.cs
- UInt32Storage.cs
- BufferedGraphics.cs
- RulePatternOps.cs
- DefaultValueAttribute.cs
- prefixendpointaddressmessagefilter.cs
- BaseDataBoundControlDesigner.cs
- VectorCollection.cs
- ViewKeyConstraint.cs
- ParameterModifier.cs
- StringSource.cs
- Calendar.cs
- EntityDataSourceDesignerHelper.cs
- BindValidator.cs
- IsolatedStorageFilePermission.cs
- XPathDocument.cs
- EventHandlerList.cs
- LinqDataSourceView.cs
- CryptoSession.cs
- XamlTreeBuilderBamlRecordWriter.cs
- XmlSchemaSimpleTypeUnion.cs
- KeysConverter.cs
- TemplateXamlTreeBuilder.cs
- AnimationLayer.cs
- ProbeMatchesMessage11.cs
- MailWriter.cs
- CodeEventReferenceExpression.cs
- CallContext.cs
- SrgsElementFactory.cs
- FixedFlowMap.cs
- PrintingPermissionAttribute.cs
- Win32NamedPipes.cs
- FrameDimension.cs
- ControlCodeDomSerializer.cs
- XomlCompilerHelpers.cs
- EntityContainerRelationshipSet.cs
- DeclarativeCatalogPartDesigner.cs
- MiniModule.cs
- IndicShape.cs
- HWStack.cs
- SignedPkcs7.cs
- NullableDecimalMinMaxAggregationOperator.cs
- PageContentCollection.cs
- InternalRelationshipCollection.cs
- ArrayConverter.cs
- ImageSourceValueSerializer.cs
- SkewTransform.cs
- ConnectionStringSettings.cs
- PictureBox.cs
- FamilyTypefaceCollection.cs
- HttpRuntime.cs
- ConversionContext.cs
- EventMappingSettingsCollection.cs
- StreamingContext.cs
- XmlSubtreeReader.cs
- NativeMethods.cs
- MatrixAnimationUsingKeyFrames.cs
- SessionStateModule.cs
- WinInetCache.cs
- ProfileSection.cs
- ImmutableObjectAttribute.cs
- EndpointAddressProcessor.cs
- ZoneLinkButton.cs
- XmlArrayAttribute.cs
- DatePickerAutomationPeer.cs
- CacheMemory.cs
- CategoryNameCollection.cs
- UIElementAutomationPeer.cs
- UrlPath.cs
- HandledMouseEvent.cs
- DXD.cs
- SliderAutomationPeer.cs
- _OSSOCK.cs
- RenderingBiasValidation.cs
- ManualResetEventSlim.cs
- RightsManagementEncryptionTransform.cs
- CounterSample.cs
- TitleStyle.cs
- DesignerVerbCollection.cs
- StaticExtensionConverter.cs
- _SafeNetHandles.cs
- MediaElement.cs
- IPPacketInformation.cs
- ComboBox.cs
- Assembly.cs
- HandleCollector.cs
- BookmarkOptionsHelper.cs
- AnchoredBlock.cs