Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- AxisAngleRotation3D.cs
- CoreChannel.cs
- DbException.cs
- UidPropertyAttribute.cs
- StringAnimationBase.cs
- SchemaDeclBase.cs
- ConnectionStringSettings.cs
- DataGridViewCell.cs
- ToolbarAUtomationPeer.cs
- OleAutBinder.cs
- XPathNodeIterator.cs
- VirtualizedContainerService.cs
- cookieexception.cs
- SubtreeProcessor.cs
- XmlArrayAttribute.cs
- MasterPage.cs
- GACIdentityPermission.cs
- Screen.cs
- JsonReader.cs
- SocketException.cs
- TaskCanceledException.cs
- BinaryFormatterWriter.cs
- FigureParaClient.cs
- UrlPath.cs
- DnsPermission.cs
- CheckBoxBaseAdapter.cs
- ListControlActionList.cs
- CommandValueSerializer.cs
- ListViewDeletedEventArgs.cs
- ISO2022Encoding.cs
- GridViewSelectEventArgs.cs
- SaveFileDialog.cs
- ChtmlLinkAdapter.cs
- HostingEnvironmentSection.cs
- RelationshipEnd.cs
- ModelPerspective.cs
- webclient.cs
- MenuItemBinding.cs
- SignatureHelper.cs
- EventSourceCreationData.cs
- SettingsProviderCollection.cs
- DatePickerTextBox.cs
- BitStream.cs
- LinkArea.cs
- BaseDataBoundControlDesigner.cs
- Array.cs
- SqlDataSource.cs
- GridViewRowCollection.cs
- HandlerBase.cs
- OptimalTextSource.cs
- WindowClosedEventArgs.cs
- InstallerTypeAttribute.cs
- PopOutPanel.cs
- SlotInfo.cs
- CommonGetThemePartSize.cs
- EdmFunctions.cs
- ISCIIEncoding.cs
- HtmlFormWrapper.cs
- KeyPressEvent.cs
- GenericTypeParameterBuilder.cs
- DefaultPrintController.cs
- ColorMatrix.cs
- ListViewUpdatedEventArgs.cs
- Evidence.cs
- SafeCryptoHandles.cs
- ThaiBuddhistCalendar.cs
- ClickablePoint.cs
- ReadOnlyTernaryTree.cs
- Renderer.cs
- InstanceNotReadyException.cs
- CanonicalFormWriter.cs
- LocalizationCodeDomSerializer.cs
- WpfGeneratedKnownTypes.cs
- HttpCookiesSection.cs
- HtmlMeta.cs
- util.cs
- ObjectDataSourceDisposingEventArgs.cs
- CompositeDataBoundControl.cs
- PathFigureCollection.cs
- XamlSerializerUtil.cs
- WebBrowserProgressChangedEventHandler.cs
- ToolStripDropDownItemDesigner.cs
- SqlConnectionFactory.cs
- WindowsScrollBarBits.cs
- adornercollection.cs
- LogStore.cs
- GetPageCompletedEventArgs.cs
- PassportIdentity.cs
- IDictionary.cs
- DirectionalLight.cs
- EnumMember.cs
- HtmlToClrEventProxy.cs
- SByte.cs
- Floater.cs
- TextCompositionEventArgs.cs
- WsatTransactionHeader.cs
- StateDesigner.cs
- AppDomainFactory.cs
- HttpModulesSection.cs
- TrackBar.cs