Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / 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. //------------------------------------------------------------------------------ //// 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
- SimpleMailWebEventProvider.cs
- StrokeNodeData.cs
- EditingCommands.cs
- PathSegment.cs
- VectorAnimationUsingKeyFrames.cs
- StatusBarDrawItemEvent.cs
- MetadataArtifactLoaderCompositeResource.cs
- CodeGeneratorOptions.cs
- ConfigXmlText.cs
- ObjectDataSourceDesigner.cs
- TextElementEnumerator.cs
- VoiceChangeEventArgs.cs
- SqlDependencyListener.cs
- SplitterPanel.cs
- EndpointAddress.cs
- brushes.cs
- _LoggingObject.cs
- SqlCommand.cs
- NavigationCommands.cs
- WebPartManager.cs
- TimeoutValidationAttribute.cs
- COMException.cs
- ControlEvent.cs
- URI.cs
- CustomError.cs
- XpsFixedDocumentReaderWriter.cs
- RadioButton.cs
- PropertyValueEditor.cs
- CellTreeNodeVisitors.cs
- ConnectionProviderAttribute.cs
- httpapplicationstate.cs
- SQLDoubleStorage.cs
- SamlAudienceRestrictionCondition.cs
- SessionEndingEventArgs.cs
- RadioButtonAutomationPeer.cs
- DataBoundControlHelper.cs
- sortedlist.cs
- MobileRedirect.cs
- CqlWriter.cs
- Documentation.cs
- SequentialUshortCollection.cs
- DataStorage.cs
- OperationPerformanceCounters.cs
- PersonalizationDictionary.cs
- SqlWebEventProvider.cs
- AsyncPostBackErrorEventArgs.cs
- PeerNameResolver.cs
- EditorReuseAttribute.cs
- PluralizationServiceUtil.cs
- XmlEnumAttribute.cs
- PermissionAttributes.cs
- MediaPlayerState.cs
- AuthenticationModuleElement.cs
- SqlDataSourceConfigureSortForm.cs
- EntityFrameworkVersions.cs
- NavigatorOutput.cs
- IConvertible.cs
- WsatServiceCertificate.cs
- StateDesigner.LayoutSelectionGlyph.cs
- SpellerHighlightLayer.cs
- HttpStreamMessageEncoderFactory.cs
- SaveFileDialog.cs
- TargetControlTypeCache.cs
- EmptyReadOnlyDictionaryInternal.cs
- NestPullup.cs
- ToolBarButton.cs
- TrackingMemoryStreamFactory.cs
- StyleSelector.cs
- SqlNamer.cs
- RadioButton.cs
- HMACRIPEMD160.cs
- DataGridViewButtonColumn.cs
- ManagementEventArgs.cs
- XmlSerializerObjectSerializer.cs
- PixelFormat.cs
- DataErrorValidationRule.cs
- WebPartTracker.cs
- MulticastDelegate.cs
- WebBrowser.cs
- AxisAngleRotation3D.cs
- XmlTextAttribute.cs
- NativeMethods.cs
- PromptEventArgs.cs
- ObjectPersistData.cs
- Message.cs
- TargetParameterCountException.cs
- TheQuery.cs
- EditorZone.cs
- RangeBase.cs
- RequestedSignatureDialog.cs
- TypeUtils.cs
- ByteStream.cs
- ComEventsSink.cs
- HtmlElementCollection.cs
- DisposableCollectionWrapper.cs
- ParallelEnumerable.cs
- PlanCompiler.cs
- DbDataRecord.cs
- _NtlmClient.cs
- JapaneseLunisolarCalendar.cs