Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- _PooledStream.cs
- Panel.cs
- PropertyToken.cs
- FixUp.cs
- OracleLob.cs
- CommonDialog.cs
- UiaCoreApi.cs
- NamedPipeWorkerProcess.cs
- AlternateViewCollection.cs
- DataContract.cs
- AppDomainAttributes.cs
- HwndSourceKeyboardInputSite.cs
- SafePointer.cs
- HtmlTableCellCollection.cs
- ConfigXmlWhitespace.cs
- SliderAutomationPeer.cs
- TraceRecord.cs
- DoubleStorage.cs
- DecoderFallback.cs
- processwaithandle.cs
- SessionStateItemCollection.cs
- ServicePointManager.cs
- SmiEventStream.cs
- Cursor.cs
- ConcurrencyBehavior.cs
- HtmlInputFile.cs
- StylusPointDescription.cs
- MemoryMappedFileSecurity.cs
- SortQuery.cs
- SQLMembershipProvider.cs
- PropertyTabChangedEvent.cs
- ObjectNotFoundException.cs
- selecteditemcollection.cs
- ActivityXRefConverter.cs
- followingquery.cs
- SafeReversePInvokeHandle.cs
- OleDbDataReader.cs
- DependencyPropertyAttribute.cs
- StoryFragments.cs
- DataContractAttribute.cs
- ApplicationInfo.cs
- MatrixTransform.cs
- RepeaterCommandEventArgs.cs
- TransactionManager.cs
- EndpointAddressAugust2004.cs
- PresentationAppDomainManager.cs
- TypeSystem.cs
- ProxyWebPartConnectionCollection.cs
- HyperLink.cs
- GcSettings.cs
- RoutedCommand.cs
- InvalidCastException.cs
- ToolStrip.cs
- IteratorFilter.cs
- FlowDocumentView.cs
- JsonQueryStringConverter.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- NestedContainer.cs
- KeyValueConfigurationCollection.cs
- CmsInterop.cs
- UserControl.cs
- NavigationProgressEventArgs.cs
- X509SecurityTokenProvider.cs
- ExceptionUtil.cs
- TemplateControlCodeDomTreeGenerator.cs
- PropertyIDSet.cs
- SoapSchemaImporter.cs
- DiscriminatorMap.cs
- WasHostedComPlusFactory.cs
- InvalidFilterCriteriaException.cs
- SqlConnectionPoolProviderInfo.cs
- OracleRowUpdatedEventArgs.cs
- MsiStyleLogWriter.cs
- WebPartConnectionsCloseVerb.cs
- ConnectivityStatus.cs
- PointAnimationClockResource.cs
- CellTreeNodeVisitors.cs
- VirtualizingStackPanel.cs
- shaperfactoryquerycacheentry.cs
- ObjectListCommand.cs
- LZCodec.cs
- ImageIndexEditor.cs
- ChtmlImageAdapter.cs
- SmtpNegotiateAuthenticationModule.cs
- QilCloneVisitor.cs
- QuaternionConverter.cs
- Binding.cs
- ActivityMarkupSerializationProvider.cs
- FunctionQuery.cs
- XmlCodeExporter.cs
- SerializationAttributes.cs
- ScrollChrome.cs
- SQLBytesStorage.cs
- ProtectedProviderSettings.cs
- ContentFilePart.cs
- StorageConditionPropertyMapping.cs
- XmlSchemaAnnotated.cs
- WhiteSpaceTrimStringConverter.cs
- NetworkCredential.cs
- SQLRoleProvider.cs