Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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++); } } } } } // 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.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++); } } } } } // 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
- InkCanvas.cs
- PostBackOptions.cs
- StorageSetMapping.cs
- TextMarkerSource.cs
- IdleTimeoutMonitor.cs
- Matrix3DStack.cs
- ContainerUIElement3D.cs
- DesignerMetadata.cs
- RectangleHotSpot.cs
- SecurityCriticalDataForSet.cs
- HtmlValidatorAdapter.cs
- WebPartMinimizeVerb.cs
- InternalCache.cs
- FileDialogCustomPlaces.cs
- TextSimpleMarkerProperties.cs
- Base64Stream.cs
- HtmlInputFile.cs
- RuleSettingsCollection.cs
- TreeNodeCollectionEditor.cs
- PageTheme.cs
- XamlTreeBuilderBamlRecordWriter.cs
- LineBreakRecord.cs
- ClientEventManager.cs
- TemplateKeyConverter.cs
- PopupControlService.cs
- HttpApplication.cs
- DirectoryInfo.cs
- Journal.cs
- BinaryNode.cs
- PropertyEmitter.cs
- WinInet.cs
- FixedPage.cs
- RangeValuePatternIdentifiers.cs
- EdmSchemaError.cs
- Screen.cs
- DataTableClearEvent.cs
- CodePageUtils.cs
- ClientProxyGenerator.cs
- SelectionItemProviderWrapper.cs
- ProviderConnectionPoint.cs
- PackageDigitalSignatureManager.cs
- EdmMember.cs
- CompilationPass2Task.cs
- BamlStream.cs
- SetterBaseCollection.cs
- BoundingRectTracker.cs
- BitmapEffectOutputConnector.cs
- DetailsViewDeletedEventArgs.cs
- ListViewItemEventArgs.cs
- Constraint.cs
- TemplateBindingExpressionConverter.cs
- WebPartDisplayMode.cs
- RNGCryptoServiceProvider.cs
- ConfigXmlDocument.cs
- TemplateManager.cs
- BindingsCollection.cs
- ShellProvider.cs
- TabPage.cs
- LocalizabilityAttribute.cs
- RootCodeDomSerializer.cs
- CacheForPrimitiveTypes.cs
- Misc.cs
- ConfigurationStrings.cs
- ColorContext.cs
- MouseOverProperty.cs
- ForwardPositionQuery.cs
- XamlSerializationHelper.cs
- Inflater.cs
- XmlHierarchicalEnumerable.cs
- ViewGenResults.cs
- SqlBooleanMismatchVisitor.cs
- MetabaseSettings.cs
- DrawListViewSubItemEventArgs.cs
- PartialCachingAttribute.cs
- MdImport.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- RuntimeConfig.cs
- FontStyles.cs
- SByte.cs
- IListConverters.cs
- XmlSchemaRedefine.cs
- TypeExtension.cs
- MD5CryptoServiceProvider.cs
- Section.cs
- InvalidDataException.cs
- ThrowHelper.cs
- LinkConverter.cs
- InitializeCorrelation.cs
- MonitorWrapper.cs
- XmlSchemaSimpleContentExtension.cs
- CreateParams.cs
- XmlSerializableServices.cs
- StandardMenuStripVerb.cs
- TraceData.cs
- Matrix3DStack.cs
- SQLDecimal.cs
- XmlAnyElementAttributes.cs
- input.cs
- SettingsAttributes.cs
- LinkButton.cs