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
- DocumentReferenceCollection.cs
- ValueProviderWrapper.cs
- NumericUpDownAccelerationCollection.cs
- XmlDictionary.cs
- PropertyToken.cs
- Triplet.cs
- MatrixCamera.cs
- XmlImplementation.cs
- CompiledRegexRunner.cs
- RefreshEventArgs.cs
- Base64Encoder.cs
- DataGridHelper.cs
- SpellerHighlightLayer.cs
- ResourcePermissionBase.cs
- ConditionCollection.cs
- BamlRecordWriter.cs
- ToolStripContentPanelRenderEventArgs.cs
- SqlClientFactory.cs
- WmlMobileTextWriter.cs
- cookieexception.cs
- HtmlTitle.cs
- SingleAnimationBase.cs
- WebPartDisplayModeCancelEventArgs.cs
- Freezable.cs
- WorkflowTransactionService.cs
- DiagnosticStrings.cs
- ServiceOperationListItemList.cs
- CodeSubDirectory.cs
- TextParaLineResult.cs
- IDReferencePropertyAttribute.cs
- BatchServiceHost.cs
- DbConnectionPoolGroupProviderInfo.cs
- GridViewColumn.cs
- Expression.cs
- VScrollBar.cs
- DataStreams.cs
- DataIdProcessor.cs
- View.cs
- FormViewCommandEventArgs.cs
- CompleteWizardStep.cs
- OracleEncoding.cs
- LocatorManager.cs
- PrintPageEvent.cs
- InteropTrackingRecord.cs
- HandlerBase.cs
- ApplicationFileCodeDomTreeGenerator.cs
- OrderedDictionary.cs
- GAC.cs
- EventProviderWriter.cs
- DataGridViewDataConnection.cs
- OleTxTransaction.cs
- shaper.cs
- SessionStateUtil.cs
- SendingRequestEventArgs.cs
- TripleDES.cs
- comcontractssection.cs
- InvalidCardException.cs
- CacheChildrenQuery.cs
- AssemblyBuilder.cs
- ReceiveSecurityHeader.cs
- AppModelKnownContentFactory.cs
- EdmMember.cs
- CodeTypeReferenceExpression.cs
- Psha1DerivedKeyGenerator.cs
- WaitHandle.cs
- GCHandleCookieTable.cs
- SubqueryRules.cs
- CLSCompliantAttribute.cs
- ServiceRoute.cs
- InfoCardBaseException.cs
- ProfileServiceManager.cs
- Decimal.cs
- FusionWrap.cs
- CleanUpVirtualizedItemEventArgs.cs
- OleDbConnectionFactory.cs
- COM2TypeInfoProcessor.cs
- DocumentCollection.cs
- WmlValidationSummaryAdapter.cs
- ProcessStartInfo.cs
- DbXmlEnabledProviderManifest.cs
- ConsumerConnectionPoint.cs
- ColumnMapProcessor.cs
- MultiplexingDispatchMessageFormatter.cs
- base64Transforms.cs
- ConnectionsZone.cs
- Accessible.cs
- ImageIndexConverter.cs
- BitmapFrameDecode.cs
- CodeCompileUnit.cs
- DbConnectionInternal.cs
- BitmapMetadataEnumerator.cs
- XmlSchemaInfo.cs
- DeploymentSection.cs
- StatusBarDrawItemEvent.cs
- CollectionExtensions.cs
- StateManagedCollection.cs
- SqlDependencyUtils.cs
- TextRunCache.cs
- PagesSection.cs
- DisplayInformation.cs