Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- XPathExpr.cs
- XmlNavigatorStack.cs
- AutomationAttributeInfo.cs
- StateElementCollection.cs
- ControlEvent.cs
- WebHttpBindingElement.cs
- RtfToken.cs
- PackageRelationshipCollection.cs
- IndependentAnimationStorage.cs
- RadioButtonAutomationPeer.cs
- DataGridRow.cs
- Module.cs
- UseAttributeSetsAction.cs
- ProfilePropertyMetadata.cs
- DBCSCodePageEncoding.cs
- StreamAsIStream.cs
- ConnectionProviderAttribute.cs
- SystemBrushes.cs
- EditingCoordinator.cs
- ListItemConverter.cs
- DiagnosticsConfiguration.cs
- Trace.cs
- Int32Storage.cs
- FileCodeGroup.cs
- IconEditor.cs
- DrawingAttributesDefaultValueFactory.cs
- DataGridTextBoxColumn.cs
- TextBox.cs
- DataControlCommands.cs
- Sql8ExpressionRewriter.cs
- StateItem.cs
- PermissionListSet.cs
- ZipIOExtraFieldZip64Element.cs
- ConcurrentStack.cs
- ObjectContext.cs
- PerfService.cs
- DataGridViewIntLinkedList.cs
- UnmanagedHandle.cs
- ConsumerConnectionPointCollection.cs
- AttributeEmitter.cs
- SafeCoTaskMem.cs
- AutomationPatternInfo.cs
- InputScope.cs
- SqlUDTStorage.cs
- CellIdBoolean.cs
- DataTableNameHandler.cs
- SortExpressionBuilder.cs
- LinkButton.cs
- HtmlControlPersistable.cs
- LostFocusEventManager.cs
- AvtEvent.cs
- SvcMapFileLoader.cs
- XmlSchema.cs
- StatusBarItemAutomationPeer.cs
- CompoundFileDeflateTransform.cs
- httpapplicationstate.cs
- Vector3dCollection.cs
- TrustManagerMoreInformation.cs
- DrawToolTipEventArgs.cs
- BinaryParser.cs
- ValueQuery.cs
- PropertyChange.cs
- ComponentCommands.cs
- PolicyReader.cs
- ServerType.cs
- SqlDelegatedTransaction.cs
- InputEventArgs.cs
- NativeMethodsOther.cs
- SendAgentStatusRequest.cs
- ByteKeyFrameCollection.cs
- CaseInsensitiveHashCodeProvider.cs
- FlowDocumentPage.cs
- CollectionViewGroupInternal.cs
- XmlHelper.cs
- Constants.cs
- TextEffect.cs
- CustomLineCap.cs
- LayoutEditorPart.cs
- VolatileEnlistmentMultiplexing.cs
- DataGridAutomationPeer.cs
- WSHttpBinding.cs
- SoapTypeAttribute.cs
- WebDescriptionAttribute.cs
- HtmlInputHidden.cs
- DataFormats.cs
- FixUpCollection.cs
- ReturnValue.cs
- PartialCachingControl.cs
- PerformanceCounter.cs
- EncryptedData.cs
- FontWeightConverter.cs
- FormViewCommandEventArgs.cs
- MemberAccessException.cs
- XMLSyntaxException.cs
- ShaderEffect.cs
- KeyValueSerializer.cs
- RangeValidator.cs
- cookiecollection.cs
- LazyTextWriterCreator.cs
- XmlConvert.cs