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
- Size3D.cs
- TypefaceMetricsCache.cs
- SqlDataSource.cs
- ModelFunction.cs
- PKCS1MaskGenerationMethod.cs
- srgsitem.cs
- XmlnsCompatibleWithAttribute.cs
- EntityViewContainer.cs
- WebPartTracker.cs
- DoubleCollectionValueSerializer.cs
- RC2CryptoServiceProvider.cs
- InvalidProgramException.cs
- CompoundFileStorageReference.cs
- ReadOnlyActivityGlyph.cs
- ExtentJoinTreeNode.cs
- ListDataHelper.cs
- COM2PropertyDescriptor.cs
- Point.cs
- LeftCellWrapper.cs
- Pair.cs
- WhileDesigner.cs
- AuthenticationSection.cs
- CharacterMetricsDictionary.cs
- CookieProtection.cs
- Point3DKeyFrameCollection.cs
- WmlPageAdapter.cs
- CodeRemoveEventStatement.cs
- DoubleCollectionConverter.cs
- ImageIndexConverter.cs
- ServiceInfo.cs
- FormViewPagerRow.cs
- Message.cs
- InputScope.cs
- HtmlControlPersistable.cs
- SqlInfoMessageEvent.cs
- Pointer.cs
- ModifiableIteratorCollection.cs
- FixedTextView.cs
- RegistryPermission.cs
- RequestCacheValidator.cs
- ConstraintCollection.cs
- ErrorWrapper.cs
- WsatProxy.cs
- FullTextState.cs
- OrCondition.cs
- SupportsPreviewControlAttribute.cs
- TransportElement.cs
- MemoryStream.cs
- MultilineStringConverter.cs
- DrawingGroup.cs
- ComponentDispatcher.cs
- PropertyTabChangedEvent.cs
- WindowsToolbarAsMenu.cs
- Int16.cs
- DataExpression.cs
- SqlDataSourceSelectingEventArgs.cs
- Timeline.cs
- SqlConnection.cs
- DataErrorValidationRule.cs
- OciHandle.cs
- ChameleonKey.cs
- WebEvents.cs
- DataGridSortingEventArgs.cs
- PrimitiveXmlSerializers.cs
- QilStrConcat.cs
- UserMapPath.cs
- DesignerForm.cs
- HandleRef.cs
- TemplatedWizardStep.cs
- TokenBasedSetEnumerator.cs
- AmbientLight.cs
- TextEmbeddedObject.cs
- CodeMemberField.cs
- CodeDirectionExpression.cs
- RegexBoyerMoore.cs
- RawAppCommandInputReport.cs
- storepermission.cs
- CallbackHandler.cs
- DbConnectionOptions.cs
- OletxCommittableTransaction.cs
- DbConnectionClosed.cs
- ScriptRegistrationManager.cs
- CachingParameterInspector.cs
- HtmlButton.cs
- ButtonFlatAdapter.cs
- FrameworkElementAutomationPeer.cs
- TextTreeUndoUnit.cs
- WorkflowInstance.cs
- BufferedGraphicsManager.cs
- FixedPageStructure.cs
- GAC.cs
- ColorConvertedBitmapExtension.cs
- AutoCompleteStringCollection.cs
- XmlArrayAttribute.cs
- ColumnWidthChangedEvent.cs
- EdmValidator.cs
- PeerNodeTraceRecord.cs
- Int32CollectionValueSerializer.cs
- ListBoxItemAutomationPeer.cs
- DataPagerField.cs