Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridViewTopLeftHeaderCell.cs
- XmlQueryOutput.cs
- FileClassifier.cs
- MaskInputRejectedEventArgs.cs
- CompiledIdentityConstraint.cs
- Int64Animation.cs
- ErrorStyle.cs
- ItemCollection.cs
- SignedInfo.cs
- PageParserFilter.cs
- SingleStorage.cs
- CatalogPartCollection.cs
- DataServiceEntityAttribute.cs
- GeneralTransformGroup.cs
- SignatureHelper.cs
- DbConnectionPoolGroupProviderInfo.cs
- PointAnimationUsingKeyFrames.cs
- ResolveRequestResponseAsyncResult.cs
- DateTimeUtil.cs
- CalendarDateRange.cs
- DbConnectionPoolIdentity.cs
- _Rfc2616CacheValidators.cs
- InputReportEventArgs.cs
- IntPtr.cs
- ExceptionValidationRule.cs
- _FtpDataStream.cs
- PropertyRef.cs
- SharedTcpTransportManager.cs
- FontDifferentiator.cs
- GACMembershipCondition.cs
- DbInsertCommandTree.cs
- TranslateTransform.cs
- SymmetricAlgorithm.cs
- TextRangeEditLists.cs
- Tablet.cs
- OrthographicCamera.cs
- ParameterReplacerVisitor.cs
- TextEditor.cs
- DataControlLinkButton.cs
- EventLevel.cs
- SimplePropertyEntry.cs
- InfoCardSymmetricCrypto.cs
- PropertyChangedEventManager.cs
- XamlRtfConverter.cs
- TablePattern.cs
- HttpApplicationStateWrapper.cs
- ZipPackage.cs
- QilGenerator.cs
- ObjectKeyFrameCollection.cs
- CollectionView.cs
- X509Certificate2.cs
- UnionQueryOperator.cs
- HealthMonitoringSection.cs
- SessionState.cs
- ApplicationHost.cs
- XamlPathDataSerializer.cs
- ProtocolsConfigurationEntry.cs
- BaseValidatorDesigner.cs
- ControllableStoryboardAction.cs
- HttpCachePolicyWrapper.cs
- WS2007HttpBindingCollectionElement.cs
- RepeaterDataBoundAdapter.cs
- ScrollChrome.cs
- RefType.cs
- CodeExpressionCollection.cs
- DeviceContext2.cs
- ColorTransform.cs
- AlternateView.cs
- NTAccount.cs
- GetParentChain.cs
- MergeFilterQuery.cs
- DataChangedEventManager.cs
- RuntimeArgumentHandle.cs
- RuntimeHelpers.cs
- IImplicitResourceProvider.cs
- DataGridDetailsPresenterAutomationPeer.cs
- SymbolDocumentInfo.cs
- TextEditorCopyPaste.cs
- Resources.Designer.cs
- InputMethodStateChangeEventArgs.cs
- ObjectCache.cs
- FillErrorEventArgs.cs
- QuotedStringWriteStateInfo.cs
- Run.cs
- SqlProcedureAttribute.cs
- IdnElement.cs
- SharingService.cs
- ApplicationSecurityInfo.cs
- HasCopySemanticsAttribute.cs
- BoolExpression.cs
- ActiveXHelper.cs
- DescendantBaseQuery.cs
- WebPartConnectionsEventArgs.cs
- GridEntry.cs
- GcHandle.cs
- VisualStyleTypesAndProperties.cs
- PathFigureCollectionConverter.cs
- ColumnBinding.cs
- RootBrowserWindowAutomationPeer.cs
- Win32PrintDialog.cs