Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebControls / XmlDataSourceView.cs / 1305376 / 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.Text; using System.Web; using System.Web.UI; using System.Xml; ////// 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++); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SystemWebCachingSectionGroup.cs
- InputLangChangeEvent.cs
- DynamicObjectAccessor.cs
- Choices.cs
- HttpWriter.cs
- FixedSOMTableCell.cs
- SchemaCollectionCompiler.cs
- OutputCacheProfile.cs
- HttpResponseMessageProperty.cs
- Boolean.cs
- XpsImageSerializationService.cs
- XmlQualifiedNameTest.cs
- MoveSizeWinEventHandler.cs
- MissingMemberException.cs
- StrokeNodeOperations.cs
- HttpBindingExtension.cs
- UnmanagedMemoryStream.cs
- LinkClickEvent.cs
- QilStrConcatenator.cs
- ToolStripContainer.cs
- ActivityDesignerAccessibleObject.cs
- IWorkflowDebuggerService.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- ContentPlaceHolder.cs
- ConfigurationPermission.cs
- InvalidCastException.cs
- HealthMonitoringSection.cs
- RefExpr.cs
- CustomCategoryAttribute.cs
- FloaterBaseParaClient.cs
- DbReferenceCollection.cs
- DataServiceEntityAttribute.cs
- Pen.cs
- KeyNameIdentifierClause.cs
- XpsPartBase.cs
- ClientConfigPaths.cs
- InteropEnvironment.cs
- CodeArrayCreateExpression.cs
- TextRangeEditLists.cs
- AdCreatedEventArgs.cs
- LayoutEngine.cs
- ToolBarButton.cs
- WebUtil.cs
- AstTree.cs
- XmlResolver.cs
- DataGridViewSortCompareEventArgs.cs
- UnsafeNativeMethods.cs
- XmlSchemaSimpleContentRestriction.cs
- QilCloneVisitor.cs
- DynamicPropertyReader.cs
- DetailsViewDeletedEventArgs.cs
- ValueTypeFixupInfo.cs
- GridSplitterAutomationPeer.cs
- Visual3DCollection.cs
- SmiEventStream.cs
- SortFieldComparer.cs
- EndEvent.cs
- ObjectConverter.cs
- TypeProvider.cs
- WorkflowExecutor.cs
- OutOfMemoryException.cs
- BooleanExpr.cs
- EntityDataSourceState.cs
- PriorityChain.cs
- XmlSchemaComplexType.cs
- VBIdentifierTrimConverter.cs
- GeometryCombineModeValidation.cs
- DispatcherSynchronizationContext.cs
- GenericRootAutomationPeer.cs
- DefaultBindingPropertyAttribute.cs
- SQLBinary.cs
- BuildProvider.cs
- WindowsTitleBar.cs
- PowerModeChangedEventArgs.cs
- safePerfProviderHandle.cs
- EntityProviderServices.cs
- ManagementScope.cs
- PageRanges.cs
- KnownTypesProvider.cs
- DrawingBrush.cs
- storagemappingitemcollection.viewdictionary.cs
- UserPreference.cs
- ComponentDispatcher.cs
- ControlPaint.cs
- TextComposition.cs
- SqlWorkflowInstanceStore.cs
- SharedPerformanceCounter.cs
- Int64.cs
- DataBoundControlParameterTarget.cs
- TimeSpanStorage.cs
- XXXInfos.cs
- RequestResizeEvent.cs
- MatchingStyle.cs
- GenerateScriptTypeAttribute.cs
- ChildrenQuery.cs
- InheritedPropertyChangedEventArgs.cs
- OracleConnectionStringBuilder.cs
- WebPartCollection.cs
- HostingEnvironmentSection.cs
- StreamReader.cs