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
- FlowLayoutPanel.cs
- FamilyMapCollection.cs
- TemplateInstanceAttribute.cs
- DataGridParentRows.cs
- TableItemStyle.cs
- WebServiceData.cs
- ListViewItemMouseHoverEvent.cs
- XmlBinaryReader.cs
- JavaScriptObjectDeserializer.cs
- DisplayNameAttribute.cs
- BitmapFrameDecode.cs
- ColorMatrix.cs
- VirtualPathUtility.cs
- CommandDevice.cs
- MetafileHeaderEmf.cs
- CultureSpecificStringDictionary.cs
- RichTextBoxConstants.cs
- DesignerOptionService.cs
- FieldToken.cs
- SerializerProvider.cs
- SafeRegistryHandle.cs
- EdmConstants.cs
- AutomationAttributeInfo.cs
- ADConnectionHelper.cs
- SplitterEvent.cs
- CounterSampleCalculator.cs
- TimelineGroup.cs
- DataListItemCollection.cs
- BrowserCapabilitiesCompiler.cs
- compensatingcollection.cs
- IdnMapping.cs
- Atom10FormatterFactory.cs
- ButtonBase.cs
- NativeActivityTransactionContext.cs
- AssemblyBuilder.cs
- DataGridViewBindingCompleteEventArgs.cs
- ConfigurationLockCollection.cs
- Internal.cs
- Native.cs
- SqlIdentifier.cs
- HierarchicalDataBoundControl.cs
- WhitespaceRule.cs
- ResolveCompletedEventArgs.cs
- CommonProperties.cs
- XamlStyleSerializer.cs
- SafeWaitHandle.cs
- Input.cs
- baseshape.cs
- StrokeCollection.cs
- InheritedPropertyDescriptor.cs
- StrongNameIdentityPermission.cs
- DataControlFieldHeaderCell.cs
- OptionalColumn.cs
- ListenerHandler.cs
- RadioButtonBaseAdapter.cs
- ViewSimplifier.cs
- DocumentViewerBaseAutomationPeer.cs
- DrawingAttributesDefaultValueFactory.cs
- Renderer.cs
- ButtonColumn.cs
- ImageDesigner.cs
- XPathSelectionIterator.cs
- DynamicResourceExtensionConverter.cs
- PageThemeParser.cs
- UseAttributeSetsAction.cs
- DataTableNewRowEvent.cs
- SafeEventLogWriteHandle.cs
- LocatorPartList.cs
- SQLString.cs
- GlobalEventManager.cs
- documentation.cs
- ListViewGroupItemCollection.cs
- CompilerTypeWithParams.cs
- WriteFileContext.cs
- KeyInstance.cs
- ProtocolsConfigurationEntry.cs
- UnsafeNativeMethods.cs
- ToolStripHighContrastRenderer.cs
- documentation.cs
- WebReferenceOptions.cs
- JpegBitmapEncoder.cs
- ImpersonateTokenRef.cs
- LayoutInformation.cs
- TextServicesLoader.cs
- ClonableStack.cs
- TcpClientSocketManager.cs
- FilterQuery.cs
- SqlProviderManifest.cs
- ProcessHostServerConfig.cs
- Inflater.cs
- UnmanagedBitmapWrapper.cs
- WorkerRequest.cs
- MainMenu.cs
- PropertyPathWorker.cs
- ProcessInfo.cs
- WebPartAuthorizationEventArgs.cs
- VSDExceptions.cs
- keycontainerpermission.cs
- XmlWriter.cs
- ToolStripItemDataObject.cs