Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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++); } } } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RootBrowserWindow.cs
- SyntaxCheck.cs
- PropertyDescriptor.cs
- SecurityTokenResolver.cs
- ClientUriBehavior.cs
- SecurityDocument.cs
- processwaithandle.cs
- ResetableIterator.cs
- SizeChangedInfo.cs
- IconHelper.cs
- LayoutManager.cs
- SqlDataSourceFilteringEventArgs.cs
- ProviderSettingsCollection.cs
- FilteredAttributeCollection.cs
- TransformGroup.cs
- DataStreamFromComStream.cs
- TraceData.cs
- WebResourceAttribute.cs
- FormsAuthentication.cs
- isolationinterop.cs
- EraserBehavior.cs
- GPStream.cs
- QuadraticBezierSegment.cs
- ArgumentOutOfRangeException.cs
- DerivedKeySecurityToken.cs
- ExpressionBindings.cs
- FigureParaClient.cs
- DesignSurfaceEvent.cs
- ToolTip.cs
- Random.cs
- FontDriver.cs
- VolatileEnlistmentMultiplexing.cs
- ConfigurationManagerInternal.cs
- AstTree.cs
- HttpApplicationFactory.cs
- ErrorWebPart.cs
- SqlRecordBuffer.cs
- _BufferOffsetSize.cs
- Pkcs7Recipient.cs
- XmlLinkedNode.cs
- AttributeTableBuilder.cs
- WebGetAttribute.cs
- MachinePropertyVariants.cs
- AxWrapperGen.cs
- TextBoxBaseDesigner.cs
- MobileComponentEditorPage.cs
- UnsafeNativeMethods.cs
- DataContract.cs
- NetworkCredential.cs
- MetadataFile.cs
- ButtonBaseAutomationPeer.cs
- MiniMapControl.xaml.cs
- ValidationSummary.cs
- MouseGestureConverter.cs
- UpDownBase.cs
- TableAdapterManagerNameHandler.cs
- RegexBoyerMoore.cs
- TextChangedEventArgs.cs
- ListItem.cs
- ClientProxyGenerator.cs
- FontStretchConverter.cs
- FormViewModeEventArgs.cs
- PatternMatcher.cs
- QueryGeneratorBase.cs
- OutKeywords.cs
- DSGeneratorProblem.cs
- DeferredElementTreeState.cs
- WinCategoryAttribute.cs
- KeyValuePair.cs
- XsltException.cs
- ImageSourceConverter.cs
- ConfigurationManagerHelper.cs
- FieldNameLookup.cs
- ReadOnlyDictionary.cs
- URIFormatException.cs
- ZipIOExtraField.cs
- InvalidPropValue.cs
- RtfToXamlLexer.cs
- EventLogPermissionEntry.cs
- LowerCaseStringConverter.cs
- RPIdentityRequirement.cs
- PathSegmentCollection.cs
- DrawingAttributesDefaultValueFactory.cs
- TextBoxBaseDesigner.cs
- XPathBinder.cs
- ManagementBaseObject.cs
- EntityContainerEmitter.cs
- WebBrowserNavigatedEventHandler.cs
- StickyNoteAnnotations.cs
- XPathCompileException.cs
- RootProfilePropertySettingsCollection.cs
- MemberDescriptor.cs
- FormatterServicesNoSerializableCheck.cs
- Block.cs
- TagPrefixCollection.cs
- EdmProperty.cs
- LineGeometry.cs
- SimplePropertyEntry.cs
- BuildProviderUtils.cs
- Atom10FormatterFactory.cs