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
- ControlIdConverter.cs
- XmlILModule.cs
- HeaderedItemsControl.cs
- XmlObjectSerializerReadContextComplex.cs
- ExpressionBindings.cs
- ObjectList.cs
- TableLayout.cs
- CodeIndexerExpression.cs
- XdrBuilder.cs
- FileDialogPermission.cs
- QueryStatement.cs
- ToolTipAutomationPeer.cs
- SBCSCodePageEncoding.cs
- XmlChoiceIdentifierAttribute.cs
- EntityTypeEmitter.cs
- ImageBrush.cs
- DataListItem.cs
- TreeView.cs
- BitFlagsGenerator.cs
- CacheEntry.cs
- XmlSchemaSimpleTypeUnion.cs
- Style.cs
- Boolean.cs
- UpDownEvent.cs
- OverrideMode.cs
- SoapObjectReader.cs
- ChangeNode.cs
- querybuilder.cs
- QilStrConcat.cs
- FontFamilyIdentifier.cs
- FixedDSBuilder.cs
- Point3DAnimationUsingKeyFrames.cs
- HtmlInputSubmit.cs
- ItemCheckedEvent.cs
- DelegatedStream.cs
- ControlCollection.cs
- CapabilitiesUse.cs
- ParallelDesigner.xaml.cs
- ListBoxItemAutomationPeer.cs
- IProvider.cs
- MultiView.cs
- Ref.cs
- PEFileReader.cs
- DetailsViewUpdatedEventArgs.cs
- VisualCollection.cs
- LabelLiteral.cs
- FixedSOMPage.cs
- TextRangeEditTables.cs
- ButtonChrome.cs
- _emptywebproxy.cs
- DataGridLinkButton.cs
- WpfWebRequestHelper.cs
- BitStream.cs
- BigInt.cs
- ThreadSafeList.cs
- StatusBarItemAutomationPeer.cs
- MultiTrigger.cs
- AssertFilter.cs
- PreloadHost.cs
- WindowsEditBoxRange.cs
- QueryGeneratorBase.cs
- ClockGroup.cs
- SafeNativeMemoryHandle.cs
- CaseInsensitiveComparer.cs
- ReferencedAssembly.cs
- DataGridDetailsPresenterAutomationPeer.cs
- FormViewPagerRow.cs
- TerminatorSinks.cs
- NeutralResourcesLanguageAttribute.cs
- Rect.cs
- SafeLibraryHandle.cs
- FormViewCommandEventArgs.cs
- ManifestResourceInfo.cs
- EventProviderWriter.cs
- RowTypePropertyElement.cs
- ListViewItemMouseHoverEvent.cs
- ManagementClass.cs
- Menu.cs
- PlacementWorkspace.cs
- WebConfigurationFileMap.cs
- SqlInternalConnection.cs
- TextPattern.cs
- ReflectionUtil.cs
- ElementProxy.cs
- KoreanLunisolarCalendar.cs
- StyleCollection.cs
- ConfigurationFileMap.cs
- DataGridHyperlinkColumn.cs
- TextEditorTables.cs
- FormViewDeleteEventArgs.cs
- SpoolingTaskBase.cs
- TraceLevelStore.cs
- SignedXml.cs
- TextEffect.cs
- MarshalDirectiveException.cs
- SchemaNames.cs
- ColorConverter.cs
- ControlCollection.cs
- ServiceDescriptionReflector.cs
- StylusPointPropertyInfo.cs