Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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. // //----------------------------------------------------------------------------- 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CapabilitiesPattern.cs
- ComplexBindingPropertiesAttribute.cs
- ThreadLocal.cs
- ProtocolsConfigurationEntry.cs
- EntityContainer.cs
- FixedTextBuilder.cs
- StackOverflowException.cs
- SQLDecimal.cs
- URLEditor.cs
- KeyboardNavigation.cs
- LocalBuilder.cs
- UnicastIPAddressInformationCollection.cs
- Decimal.cs
- ParenExpr.cs
- PropertyEmitterBase.cs
- RegexGroup.cs
- WebPartDeleteVerb.cs
- TextViewDesigner.cs
- SoapElementAttribute.cs
- path.cs
- AspNetSynchronizationContext.cs
- AsyncOperation.cs
- CalendarTable.cs
- EntityViewContainer.cs
- CodeTryCatchFinallyStatement.cs
- TextElement.cs
- ReferenceService.cs
- Attributes.cs
- Token.cs
- StdValidatorsAndConverters.cs
- CodeStatementCollection.cs
- DateTimeOffsetConverter.cs
- Fault.cs
- StreamSecurityUpgradeInitiatorBase.cs
- BamlLocalizer.cs
- AlphabetConverter.cs
- OutputScope.cs
- ReachFixedDocumentSerializerAsync.cs
- TraceXPathNavigator.cs
- HttpProtocolReflector.cs
- PointF.cs
- WebRequest.cs
- SemanticResolver.cs
- RenderingEventArgs.cs
- CatalogZoneDesigner.cs
- DataGridColumnEventArgs.cs
- CodeGenerator.cs
- BufferedOutputAsyncStream.cs
- SHA256Managed.cs
- TimeoutTimer.cs
- MediaEntryAttribute.cs
- HtmlEmptyTagControlBuilder.cs
- FormViewPagerRow.cs
- MobileResource.cs
- ToolStripOverflow.cs
- ToolStripPanelDesigner.cs
- ViewStateModeByIdAttribute.cs
- DocumentAutomationPeer.cs
- DeviceFilterDictionary.cs
- Container.cs
- PropertyGridEditorPart.cs
- CapabilitiesPattern.cs
- SqlError.cs
- OleDbInfoMessageEvent.cs
- ObjectItemCachedAssemblyLoader.cs
- RegexInterpreter.cs
- UIElement.cs
- CryptoHelper.cs
- CurrentChangingEventManager.cs
- dataobject.cs
- CharEnumerator.cs
- GrammarBuilder.cs
- PlanCompiler.cs
- UrlMappingCollection.cs
- HtmlTernaryTree.cs
- BasicHttpBindingElement.cs
- TextTreeRootNode.cs
- StorageEntityTypeMapping.cs
- WriteTimeStream.cs
- Registry.cs
- WindowPattern.cs
- InstanceStoreQueryResult.cs
- TableDetailsRow.cs
- SelectionProcessor.cs
- DataSourceView.cs
- BitmapData.cs
- StorageScalarPropertyMapping.cs
- remotingproxy.cs
- WriteFileContext.cs
- SQLBinaryStorage.cs
- EmptyReadOnlyDictionaryInternal.cs
- QuotedPrintableStream.cs
- UnlockInstanceCommand.cs
- EditorPart.cs
- URL.cs
- FormViewRow.cs
- StandardBindingImporter.cs
- SecurityTokenTypes.cs
- UpdatePanel.cs
- FactoryGenerator.cs