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
- ModifierKeysValueSerializer.cs
- HitTestResult.cs
- ChtmlTextWriter.cs
- DataTableExtensions.cs
- DirectoryNotFoundException.cs
- ReaderContextStackData.cs
- __Filters.cs
- AuthenticationModulesSection.cs
- TemplateInstanceAttribute.cs
- TrailingSpaceComparer.cs
- XmlTextReaderImplHelpers.cs
- UInt32Storage.cs
- DictionaryBase.cs
- CircleHotSpot.cs
- UriSectionData.cs
- PerfService.cs
- SqlServer2KCompatibilityAnnotation.cs
- SqlCommandBuilder.cs
- SecurityUtils.cs
- SelectedDatesCollection.cs
- TextServicesDisplayAttributePropertyRanges.cs
- FlowLayoutPanelDesigner.cs
- RemoteWebConfigurationHostServer.cs
- ObjectItemAttributeAssemblyLoader.cs
- SQLBoolean.cs
- Sql8ConformanceChecker.cs
- HttpWrapper.cs
- TransactionBehavior.cs
- RepeaterItemCollection.cs
- NativeStructs.cs
- ReflectEventDescriptor.cs
- WindowsServiceCredential.cs
- TextSpanModifier.cs
- FrameworkRichTextComposition.cs
- SecUtil.cs
- QueryMath.cs
- ValidationSummary.cs
- MenuItemAutomationPeer.cs
- ExpandCollapsePattern.cs
- UnsafeNativeMethods.cs
- XPathNavigator.cs
- ScriptingScriptResourceHandlerSection.cs
- SqlDataAdapter.cs
- TextElement.cs
- ConsumerConnectionPointCollection.cs
- BufferAllocator.cs
- ValidatorCompatibilityHelper.cs
- IconBitmapDecoder.cs
- NameObjectCollectionBase.cs
- DbDataReader.cs
- FactoryMaker.cs
- CodeDirectoryCompiler.cs
- MaterialCollection.cs
- Condition.cs
- DictionaryEditChange.cs
- TextEffect.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- EventArgs.cs
- BamlLocalizer.cs
- ChangeInterceptorAttribute.cs
- DispatcherExceptionFilterEventArgs.cs
- ListBox.cs
- DefaultSection.cs
- PageAdapter.cs
- PublisherMembershipCondition.cs
- OleDbReferenceCollection.cs
- InstanceKeyNotReadyException.cs
- D3DImage.cs
- SqlDependencyListener.cs
- SchemaMapping.cs
- EventToken.cs
- DataGridViewRowEventArgs.cs
- IsolatedStorage.cs
- SynchronizationLockException.cs
- DbCommandTree.cs
- LinkDesigner.cs
- IPEndPointCollection.cs
- Msec.cs
- Memoizer.cs
- ClientRolePrincipal.cs
- XmlSerializerNamespaces.cs
- DataGridViewCellFormattingEventArgs.cs
- ConfigXmlElement.cs
- BookmarkEventArgs.cs
- GacUtil.cs
- EasingKeyFrames.cs
- InkCanvasSelection.cs
- SendMessageContent.cs
- BlobPersonalizationState.cs
- linebase.cs
- ErrorStyle.cs
- RolePrincipal.cs
- XmlValueConverter.cs
- MenuAutomationPeer.cs
- XMLUtil.cs
- ACL.cs
- FileDialog_Vista.cs
- WebFormDesignerActionService.cs
- CallbackValidatorAttribute.cs
- CalendarAutoFormat.cs