Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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++); } } } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ReferenceEqualityComparer.cs
- ImageButton.cs
- TextSerializer.cs
- ConnectionManagementElement.cs
- XPathParser.cs
- ConnectionManagementSection.cs
- Formatter.cs
- Interlocked.cs
- PageThemeParser.cs
- BamlWriter.cs
- GridView.cs
- SessionPageStateSection.cs
- PaintEvent.cs
- UpdateCompiler.cs
- PrintingPermission.cs
- PolicyLevel.cs
- ScrollChrome.cs
- SharedTcpTransportManager.cs
- CompilationRelaxations.cs
- Calendar.cs
- ConstantExpression.cs
- QilXmlWriter.cs
- DataListItemEventArgs.cs
- FormParameter.cs
- MethodImplAttribute.cs
- TextModifierScope.cs
- TextStore.cs
- GridViewRowEventArgs.cs
- CheckBox.cs
- DivideByZeroException.cs
- KeyEvent.cs
- SmtpTransport.cs
- HierarchicalDataBoundControl.cs
- HiddenFieldPageStatePersister.cs
- KerberosSecurityTokenProvider.cs
- ExceptionRoutedEventArgs.cs
- shaperfactoryquerycacheentry.cs
- WsdlExporter.cs
- LateBoundBitmapDecoder.cs
- FontNamesConverter.cs
- HwndHostAutomationPeer.cs
- StylusCollection.cs
- CollectionViewGroupInternal.cs
- CopyNodeSetAction.cs
- BaseAddressElement.cs
- SQLInt16Storage.cs
- VirtualDirectoryMapping.cs
- DiscardableAttribute.cs
- LinkTarget.cs
- DataGridPageChangedEventArgs.cs
- UnsafeCollabNativeMethods.cs
- TimelineGroup.cs
- ProgramNode.cs
- PenContext.cs
- ProcessThread.cs
- LexicalChunk.cs
- InputManager.cs
- NumericPagerField.cs
- RawStylusActions.cs
- Transform3DGroup.cs
- ErrorHandler.cs
- CollectionViewSource.cs
- EntityDataSource.cs
- UdpDiscoveryMessageFilter.cs
- FunctionMappingTranslator.cs
- OdbcParameter.cs
- Update.cs
- ResXBuildProvider.cs
- ValidatorCompatibilityHelper.cs
- WebConfigurationHost.cs
- ConditionCollection.cs
- TransformConverter.cs
- QuaternionIndependentAnimationStorage.cs
- VisualStyleInformation.cs
- ConfigurationElement.cs
- XPathNodeList.cs
- HostSecurityManager.cs
- SystemTcpStatistics.cs
- String.cs
- webproxy.cs
- PageContent.cs
- WindowsTreeView.cs
- SharedDp.cs
- StatusBarDrawItemEvent.cs
- DataReceivedEventArgs.cs
- MarkupCompilePass2.cs
- ListBase.cs
- ToolStripSystemRenderer.cs
- EntityKeyElement.cs
- PolicyStatement.cs
- SelectionItemPattern.cs
- ValidationVisibilityAttribute.cs
- XamlToRtfParser.cs
- ConfigXmlElement.cs
- ScrollChangedEventArgs.cs
- _HeaderInfoTable.cs
- ProxyGenerationError.cs
- LoginUtil.cs
- XPathSingletonIterator.cs
- Padding.cs