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
- PrintPageEvent.cs
- RTLAwareMessageBox.cs
- SqlNodeAnnotations.cs
- SolidBrush.cs
- DirectoryLocalQuery.cs
- RegexWorker.cs
- EditorPartChrome.cs
- UInt16.cs
- Crc32Helper.cs
- TypeUtils.cs
- SqlRowUpdatedEvent.cs
- SiteMapDesignerDataSourceView.cs
- RoleGroupCollection.cs
- SqlCacheDependencyDatabase.cs
- CodeCommentStatementCollection.cs
- TextEditorDragDrop.cs
- HtmlLiteralTextAdapter.cs
- ChangeBlockUndoRecord.cs
- XLinq.cs
- DelegatedStream.cs
- DataGridBoolColumn.cs
- ModuleBuilderData.cs
- ListViewContainer.cs
- HtmlShimManager.cs
- __Filters.cs
- SelfIssuedTokenFactoryCredential.cs
- DependencyPropertyConverter.cs
- MemberMaps.cs
- XmlSchemaObjectTable.cs
- WebServiceResponseDesigner.cs
- contentDescriptor.cs
- ControlBindingsCollection.cs
- ListBindingHelper.cs
- Splitter.cs
- GenericTypeParameterBuilder.cs
- BindingManagerDataErrorEventArgs.cs
- TokenizerHelper.cs
- CompositeFontParser.cs
- TransformerInfoCollection.cs
- DataBoundControlAdapter.cs
- SystemGatewayIPAddressInformation.cs
- LinkButton.cs
- UrlAuthorizationModule.cs
- RawUIStateInputReport.cs
- SqlFacetAttribute.cs
- DynamicEndpoint.cs
- TypedTableBaseExtensions.cs
- Material.cs
- XmlSchemaSimpleTypeUnion.cs
- EllipseGeometry.cs
- Events.cs
- MemberHolder.cs
- RotateTransform.cs
- OutputScope.cs
- DataGridToolTip.cs
- SimpleMailWebEventProvider.cs
- DataExpression.cs
- ThemeableAttribute.cs
- TagPrefixInfo.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- EventLogSession.cs
- DiagnosticsElement.cs
- TreeWalker.cs
- CacheSection.cs
- EndpointDiscoveryMetadataCD1.cs
- RunClient.cs
- Effect.cs
- BrowserDefinition.cs
- QueryAccessibilityHelpEvent.cs
- TimelineGroup.cs
- Attachment.cs
- ParamArrayAttribute.cs
- Activity.cs
- SetterBaseCollection.cs
- SafeRightsManagementPubHandle.cs
- MemoryPressure.cs
- TextTreeInsertElementUndoUnit.cs
- QueueAccessMode.cs
- UIElementAutomationPeer.cs
- ContextMenuService.cs
- TableLayoutPanelCellPosition.cs
- SqlRemoveConstantOrderBy.cs
- FixedSOMTextRun.cs
- PenThreadWorker.cs
- RadioButtonFlatAdapter.cs
- XmlAutoDetectWriter.cs
- RepeatButtonAutomationPeer.cs
- mda.cs
- GeneratedView.cs
- RequestReplyCorrelator.cs
- TraceContext.cs
- CAGDesigner.cs
- DBConnection.cs
- JsonDataContract.cs
- Int16Converter.cs
- ColorConverter.cs
- GenericTypeParameterBuilder.cs
- XmlEncodedRawTextWriter.cs
- SoapIncludeAttribute.cs
- uribuilder.cs