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
- TextEditorCopyPaste.cs
- ImageFormat.cs
- SQLBoolean.cs
- WebPartConnectionsConfigureVerb.cs
- ConfigurationValidatorAttribute.cs
- ColumnCollection.cs
- RelatedCurrencyManager.cs
- TextureBrush.cs
- SoapFault.cs
- ReceiveReply.cs
- SqlDataSourceFilteringEventArgs.cs
- CommandPlan.cs
- ProgressBarAutomationPeer.cs
- AuthenticationConfig.cs
- XmlSerializerAssemblyAttribute.cs
- MyContact.cs
- SqlUserDefinedAggregateAttribute.cs
- SynchronizedRandom.cs
- SafeViewOfFileHandle.cs
- BaseResourcesBuildProvider.cs
- Transform.cs
- LinqDataSource.cs
- GrammarBuilder.cs
- XsltLoader.cs
- PropertyChangedEventManager.cs
- FontFamilyConverter.cs
- SiteMapPathDesigner.cs
- KnownBoxes.cs
- HttpCapabilitiesBase.cs
- WebPartUserCapability.cs
- OptimalTextSource.cs
- CodeCastExpression.cs
- SqlProvider.cs
- DateTimeUtil.cs
- DataGridRelationshipRow.cs
- AsymmetricSignatureDeformatter.cs
- GcHandle.cs
- SkipQueryOptionExpression.cs
- DataGridViewCellEventArgs.cs
- ServiceModelEnumValidator.cs
- EventLogSession.cs
- TaskFileService.cs
- RequestTimeoutManager.cs
- ProfileBuildProvider.cs
- SByteStorage.cs
- Set.cs
- RadioButtonPopupAdapter.cs
- RuntimeWrappedException.cs
- MetadataException.cs
- DesignerCommandAdapter.cs
- TextRangeEdit.cs
- Component.cs
- Common.cs
- ListControlActionList.cs
- ItemsChangedEventArgs.cs
- FormattedText.cs
- CodeSnippetCompileUnit.cs
- XPathNodeList.cs
- Attributes.cs
- ExpressionEditorSheet.cs
- RootDesignerSerializerAttribute.cs
- SimpleWebHandlerParser.cs
- CompiledQuery.cs
- NumberFormatter.cs
- ScrollData.cs
- UrlMappingsModule.cs
- DetailsViewUpdatedEventArgs.cs
- PartialArray.cs
- CngKey.cs
- CodeDirectoryCompiler.cs
- DataSet.cs
- Utility.cs
- ContainerControlDesigner.cs
- XmlStrings.cs
- XsdDateTime.cs
- DashStyles.cs
- ConfigurationProperty.cs
- PropertyBuilder.cs
- Cursor.cs
- LinqDataSourceUpdateEventArgs.cs
- AudioFormatConverter.cs
- MaterialGroup.cs
- FixedSOMLineCollection.cs
- WorkflowServiceNamespace.cs
- CodeTypeReference.cs
- DropTarget.cs
- RelatedCurrencyManager.cs
- XmlSecureResolver.cs
- ListItemViewAttribute.cs
- Utils.cs
- EasingKeyFrames.cs
- TemplateBindingExpression.cs
- SmtpNetworkElement.cs
- Exceptions.cs
- ControlAdapter.cs
- CompressStream.cs
- SerializationException.cs
- XAMLParseException.cs
- SqlTransaction.cs
- PrintPageEvent.cs