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
- DataSourceHelper.cs
- PriorityQueue.cs
- DataGridViewRowConverter.cs
- ObjectParameter.cs
- BuildManager.cs
- TransactionTraceIdentifier.cs
- DesignerImageAdapter.cs
- SecurityElement.cs
- X509RecipientCertificateServiceElement.cs
- SqlDeflator.cs
- CloseSequenceResponse.cs
- ControlCollection.cs
- PreviewPrintController.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- Int16Animation.cs
- XmlSchemaAttributeGroup.cs
- WebPartMenu.cs
- XsdDateTime.cs
- DeferredReference.cs
- MultiTouchSystemGestureLogic.cs
- DragEventArgs.cs
- JavaScriptObjectDeserializer.cs
- JavaScriptString.cs
- TextCompositionManager.cs
- SpecialFolderEnumConverter.cs
- EventLogEntryCollection.cs
- TextProperties.cs
- ToolStripDropDownItem.cs
- Tag.cs
- HtmlTable.cs
- TabControlAutomationPeer.cs
- ZipIOBlockManager.cs
- BodyGlyph.cs
- TraceSource.cs
- SqlNodeTypeOperators.cs
- PageTheme.cs
- VariableReference.cs
- MessageSecurityOverHttpElement.cs
- MasterPageBuildProvider.cs
- listitem.cs
- HwndStylusInputProvider.cs
- RangeContentEnumerator.cs
- PhotoPrintingIntent.cs
- ScaleTransform.cs
- Table.cs
- ClientConfigurationHost.cs
- EntityDataSourceSelectingEventArgs.cs
- PerfCounterSection.cs
- HttpApplicationFactory.cs
- IndexingContentUnit.cs
- WeakReferenceEnumerator.cs
- OleDbErrorCollection.cs
- FlowDocumentReader.cs
- CqlIdentifiers.cs
- OrderByExpression.cs
- BlockCollection.cs
- DescendantOverDescendantQuery.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- EntryPointNotFoundException.cs
- RawKeyboardInputReport.cs
- HttpProtocolReflector.cs
- CultureTable.cs
- AppDomainInfo.cs
- WebScriptClientGenerator.cs
- DataGridViewRowPostPaintEventArgs.cs
- WebServiceAttribute.cs
- WSHttpBinding.cs
- Root.cs
- NullReferenceException.cs
- CurrencyManager.cs
- XomlDesignerLoader.cs
- ClientCultureInfo.cs
- Message.cs
- ContentPropertyAttribute.cs
- ControlBuilder.cs
- AttachmentService.cs
- HtmlFormWrapper.cs
- RegexGroup.cs
- StateRuntime.cs
- SchemaCollectionCompiler.cs
- TemplateEditingFrame.cs
- SafeFileHandle.cs
- CallbackValidator.cs
- SymLanguageType.cs
- Stylesheet.cs
- CodeDirectionExpression.cs
- MarkupProperty.cs
- AdornerPresentationContext.cs
- _NestedSingleAsyncResult.cs
- TextDecorations.cs
- ChineseLunisolarCalendar.cs
- basenumberconverter.cs
- ArcSegment.cs
- AddToCollection.cs
- ClientConfigurationSystem.cs
- DoubleLinkList.cs
- PointLightBase.cs
- _AcceptOverlappedAsyncResult.cs
- AutomationIdentifierGuids.cs
- ConfigXmlText.cs