Code:
/ DotNET / DotNET / 8.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
- CodeNamespaceImportCollection.cs
- Encoding.cs
- Graphics.cs
- Hex.cs
- KeyboardDevice.cs
- ReadOnlyHierarchicalDataSourceView.cs
- DesignerAdRotatorAdapter.cs
- PlatformNotSupportedException.cs
- ReachDocumentSequenceSerializerAsync.cs
- PathTooLongException.cs
- SpeechRecognizer.cs
- Wrapper.cs
- COM2ColorConverter.cs
- AttributeUsageAttribute.cs
- UnaryExpression.cs
- Renderer.cs
- RequestQueue.cs
- SHA512.cs
- MissingManifestResourceException.cs
- DataGridViewCellLinkedList.cs
- DiscoveryClientElement.cs
- MenuScrollingVisibilityConverter.cs
- DropSource.cs
- HotSpotCollection.cs
- XsltConvert.cs
- CriticalHandle.cs
- DataServiceKeyAttribute.cs
- FaultDescriptionCollection.cs
- SymmetricKeyWrap.cs
- TextContainerChangeEventArgs.cs
- HashCodeCombiner.cs
- ContextMenuAutomationPeer.cs
- SrgsSemanticInterpretationTag.cs
- StyleCollection.cs
- DBCommandBuilder.cs
- WSSecurityXXX2005.cs
- GraphicsPath.cs
- CodeGen.cs
- AlternationConverter.cs
- WhitespaceSignificantCollectionAttribute.cs
- linebase.cs
- SqlMethodCallConverter.cs
- Image.cs
- GridViewDeletedEventArgs.cs
- TextTreeNode.cs
- FacetEnabledSchemaElement.cs
- CompositeCollectionView.cs
- QueryOpeningEnumerator.cs
- FormsIdentity.cs
- GridViewColumnCollectionChangedEventArgs.cs
- KeyTime.cs
- DeviceContext2.cs
- DataGridTableStyleMappingNameEditor.cs
- DodSequenceMerge.cs
- IPHostEntry.cs
- Symbol.cs
- SqlSelectStatement.cs
- ReadOnlyAttribute.cs
- BookmarkInfo.cs
- DataDocumentXPathNavigator.cs
- DataGridHeaderBorder.cs
- OleDbPropertySetGuid.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- CodeConstructor.cs
- ProcessDesigner.cs
- OledbConnectionStringbuilder.cs
- SmiEventSink_DeferedProcessing.cs
- MappingSource.cs
- GenerateHelper.cs
- SynchronizationValidator.cs
- CodeMethodMap.cs
- CommonDialog.cs
- DataGridRow.cs
- Line.cs
- AppDomainUnloadedException.cs
- MessageBox.cs
- ManualResetEvent.cs
- CommonDialog.cs
- CapabilitiesUse.cs
- XPathAncestorIterator.cs
- ItemCollection.cs
- TextTreeTextNode.cs
- ModuleBuilderData.cs
- EventManager.cs
- DataColumnCollection.cs
- Matrix3D.cs
- UserPreferenceChangedEventArgs.cs
- TextBoxView.cs
- OptimizerPatterns.cs
- ElementAtQueryOperator.cs
- ClientScriptManagerWrapper.cs
- ZoneMembershipCondition.cs
- BitVector32.cs
- ToolboxComponentsCreatedEventArgs.cs
- SmiContext.cs
- DefaultHttpHandler.cs
- FileDialog_Vista_Interop.cs
- Rijndael.cs
- SslStream.cs
- BindingManagerDataErrorEventArgs.cs