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
- DefaultEventAttribute.cs
- FieldDescriptor.cs
- TextDecorationCollectionConverter.cs
- SqlAliasesReferenced.cs
- TraceContextRecord.cs
- Application.cs
- InfoCardProofToken.cs
- ScriptResourceHandler.cs
- HandlerWithFactory.cs
- Operators.cs
- HtmlInputButton.cs
- WindowsToolbarItemAsMenuItem.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- LineSegment.cs
- TraceContextEventArgs.cs
- GroupDescription.cs
- XmlText.cs
- XmlIgnoreAttribute.cs
- ServiceProviders.cs
- Message.cs
- DataGridCheckBoxColumn.cs
- RSAOAEPKeyExchangeFormatter.cs
- HMACSHA1.cs
- ClientUrlResolverWrapper.cs
- DelegateSerializationHolder.cs
- ModifiableIteratorCollection.cs
- VsPropertyGrid.cs
- Inline.cs
- WeakReferenceKey.cs
- ConnectionStringsExpressionBuilder.cs
- EntityContainerEmitter.cs
- Int16AnimationBase.cs
- SplineKeyFrames.cs
- ExpressionVisitor.cs
- SourceElementsCollection.cs
- ColorMatrix.cs
- ServiceHttpHandlerFactory.cs
- HandlerFactoryWrapper.cs
- ComboBox.cs
- _BufferOffsetSize.cs
- PreviewPageInfo.cs
- Environment.cs
- ContextItem.cs
- Knowncolors.cs
- AssemblyBuilderData.cs
- DesignerTextViewAdapter.cs
- XmlObjectSerializerWriteContextComplex.cs
- WebPartDisplayMode.cs
- ProvidersHelper.cs
- XsltFunctions.cs
- QueryOperationResponseOfT.cs
- ObjRef.cs
- VisualBrush.cs
- GridViewDeletedEventArgs.cs
- ObjectNavigationPropertyMapping.cs
- DecoderReplacementFallback.cs
- HtmlTernaryTree.cs
- XPathAncestorIterator.cs
- SapiRecoContext.cs
- IncrementalHitTester.cs
- AppDomainManager.cs
- DisplayMemberTemplateSelector.cs
- ConnectionStringsExpressionBuilder.cs
- BindingCompleteEventArgs.cs
- MenuTracker.cs
- SocketPermission.cs
- ChannelCacheSettings.cs
- OracleCommandBuilder.cs
- XmlReflectionMember.cs
- SocketManager.cs
- ProviderCommandInfoUtils.cs
- TraceLog.cs
- XmlQueryStaticData.cs
- ScrollBar.cs
- ObjectDataSourceEventArgs.cs
- DependencyObjectType.cs
- NavigationProperty.cs
- DataServiceQueryException.cs
- NameValuePair.cs
- StructuredTypeEmitter.cs
- HtmlContainerControl.cs
- HtmlTableRow.cs
- CrossAppDomainChannel.cs
- Scene3D.cs
- CqlBlock.cs
- VBIdentifierDesigner.xaml.cs
- WebServiceHandlerFactory.cs
- DetailsViewPagerRow.cs
- CustomAttribute.cs
- ToolBar.cs
- RegexFCD.cs
- PageThemeParser.cs
- XmlCharacterData.cs
- DefaultValueTypeConverter.cs
- TextSpanModifier.cs
- DataServiceEntityAttribute.cs
- WmlFormAdapter.cs
- ObjectDataSource.cs
- PersonalizationStateQuery.cs
- CharStorage.cs