Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebControls / XmlDataSourceView.cs / 1305376 / 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.Text; using System.Web; using System.Web.UI; using System.Xml; ////// 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.Text; using System.Web; using System.Web.UI; using System.Xml; ////// 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
- DetailsViewUpdateEventArgs.cs
- WebBrowserSiteBase.cs
- DSACryptoServiceProvider.cs
- processwaithandle.cs
- XmlSchemaSet.cs
- EventEntry.cs
- EpmSyndicationContentSerializer.cs
- DocumentViewerHelper.cs
- externdll.cs
- JournalNavigationScope.cs
- CustomErrorCollection.cs
- DateTimeOffset.cs
- OdbcRowUpdatingEvent.cs
- TcpProcessProtocolHandler.cs
- DataFormat.cs
- Timer.cs
- SchemaImporterExtensionsSection.cs
- NativeMethodsCLR.cs
- DataSetMappper.cs
- XmlIgnoreAttribute.cs
- RangeBase.cs
- TableItemPattern.cs
- GPPOINTF.cs
- GetMemberBinder.cs
- MemberAccessException.cs
- DbParameterCollection.cs
- WindowsListViewGroupHelper.cs
- CompilerErrorCollection.cs
- LayoutDump.cs
- IPPacketInformation.cs
- StackBuilderSink.cs
- ArgumentOutOfRangeException.cs
- SystemNetworkInterface.cs
- BinaryObjectInfo.cs
- Identifier.cs
- ObjectListComponentEditor.cs
- AsyncStreamReader.cs
- StateWorkerRequest.cs
- CharacterMetrics.cs
- ConfigXmlReader.cs
- TextFragmentEngine.cs
- ResourcePermissionBase.cs
- DataError.cs
- KernelTypeValidation.cs
- WmlValidatorAdapter.cs
- PermissionListSet.cs
- NamedPipeProcessProtocolHandler.cs
- AdapterDictionary.cs
- ElementHost.cs
- GeneratedContractType.cs
- ReferenceEqualityComparer.cs
- WorkflowItemPresenter.cs
- DefaultDialogButtons.cs
- CountdownEvent.cs
- SimpleApplicationHost.cs
- ZoneIdentityPermission.cs
- HttpConfigurationSystem.cs
- NumberFunctions.cs
- BaseDataListComponentEditor.cs
- PageParserFilter.cs
- DisplayNameAttribute.cs
- PageTheme.cs
- HtmlImage.cs
- OperatorExpressions.cs
- Transform3D.cs
- SQLBinaryStorage.cs
- CFStream.cs
- Divide.cs
- GPPOINT.cs
- CheckBoxAutomationPeer.cs
- DoubleCollectionValueSerializer.cs
- UnsafeNativeMethods.cs
- RouteData.cs
- SqlBuilder.cs
- securitycriticaldataClass.cs
- Label.cs
- ParallelTimeline.cs
- DataPagerCommandEventArgs.cs
- ConfigPathUtility.cs
- FormViewRow.cs
- TextTrailingCharacterEllipsis.cs
- _NegoStream.cs
- DataListItemEventArgs.cs
- XmlIlVisitor.cs
- ShapingEngine.cs
- XmlSiteMapProvider.cs
- ApplicationTrust.cs
- LZCodec.cs
- XmlSchemaParticle.cs
- IssuedTokensHeader.cs
- DataGridBoundColumn.cs
- NetSectionGroup.cs
- Matrix3D.cs
- BCryptNative.cs
- ListControlConvertEventArgs.cs
- ToolStripStatusLabel.cs
- GenericEnumConverter.cs
- listitem.cs
- StandardOleMarshalObject.cs
- DataServiceConfiguration.cs