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
- CodeAttributeArgument.cs
- WebZone.cs
- HtmlImage.cs
- ExecutionContext.cs
- WebPartHelpVerb.cs
- filewebrequest.cs
- RoleGroupCollection.cs
- SafeTimerHandle.cs
- LateBoundBitmapDecoder.cs
- RecipientInfo.cs
- XpsS0ValidatingLoader.cs
- XmlLinkedNode.cs
- Label.cs
- XmlNodeChangedEventArgs.cs
- DbProviderConfigurationHandler.cs
- ProxyWebPartConnectionCollection.cs
- FontWeightConverter.cs
- AdornerLayer.cs
- ServiceOperationDetailViewControl.cs
- FormsAuthenticationEventArgs.cs
- SafeTokenHandle.cs
- Stylus.cs
- EdmPropertyAttribute.cs
- CollectionEditorDialog.cs
- DropSource.cs
- MultiBinding.cs
- WorkflowOperationAsyncResult.cs
- FrameworkContextData.cs
- AcceleratedTokenProvider.cs
- FormClosedEvent.cs
- MdImport.cs
- UnauthorizedWebPart.cs
- DataGridViewImageColumn.cs
- BitmapEffectRenderDataResource.cs
- CustomError.cs
- FixedDocument.cs
- StaticDataManager.cs
- ToggleButtonAutomationPeer.cs
- StringUtil.cs
- PointCollection.cs
- PenContexts.cs
- GlobalizationSection.cs
- UxThemeWrapper.cs
- QueryResponse.cs
- ScrollBar.cs
- TransformConverter.cs
- SafeRightsManagementQueryHandle.cs
- LeafCellTreeNode.cs
- PeerApplication.cs
- XhtmlConformanceSection.cs
- ImplicitInputBrush.cs
- Parallel.cs
- JobDuplex.cs
- InvocationExpression.cs
- ColumnPropertiesGroup.cs
- BooleanToVisibilityConverter.cs
- Point3DConverter.cs
- RemoteWebConfigurationHostServer.cs
- DispatcherProcessingDisabled.cs
- DocumentPaginator.cs
- NominalTypeEliminator.cs
- SafeRightsManagementHandle.cs
- UniformGrid.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- ConfigurationCollectionAttribute.cs
- LinqDataSource.cs
- DetailsViewModeEventArgs.cs
- Clock.cs
- PersianCalendar.cs
- SqlSelectStatement.cs
- Stylesheet.cs
- FontFamily.cs
- CaseInsensitiveHashCodeProvider.cs
- _Win32.cs
- PrintPreviewDialog.cs
- PersistenceMetadataNamespace.cs
- BrowserDefinitionCollection.cs
- LayoutTable.cs
- ImpersonateTokenRef.cs
- EFTableProvider.cs
- DetectRunnableInstancesTask.cs
- HttpListenerRequest.cs
- GridViewColumn.cs
- CellTreeNode.cs
- PropertyDescriptor.cs
- BitmapEffectGroup.cs
- UnknownBitmapDecoder.cs
- HeaderUtility.cs
- FamilyMapCollection.cs
- NativeRecognizer.cs
- XmlSchemaObjectTable.cs
- DataTableMapping.cs
- WsrmTraceRecord.cs
- RequestCacheValidator.cs
- RegionData.cs
- SignedInfo.cs
- DependencyObjectProvider.cs
- ComplexPropertyEntry.cs
- SecurityDocument.cs
- ResourceContainerWrapper.cs