Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / UI / WebControls / DataBoundControlHelper.cs / 1 / DataBoundControlHelper.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Security.Permissions;
using System.Web.Util;
///
/// Helper class for DataBoundControls and v1 data controls.
/// This is also used by ControlParameter to find its associated
/// control.
///
internal static class DataBoundControlHelper {
///
/// Walks up the stack of NamingContainers starting at 'control' to find a control with the ID 'controlID'.
///
public static Control FindControl(Control control, string controlID) {
Debug.Assert(control != null, "control should not be null");
Debug.Assert(!String.IsNullOrEmpty(controlID), "controlID should not be empty");
Control currentContainer = control;
Control foundControl = null;
if (control == control.Page) {
// If we get to the Page itself while we're walking up the
// hierarchy, just return whatever item we find (if anything)
// since we can't walk any higher.
return control.FindControl(controlID);
}
while (foundControl == null && currentContainer != control.Page) {
currentContainer = currentContainer.NamingContainer;
if (currentContainer == null) {
throw new HttpException(SR.GetString(SR.DataBoundControlHelper_NoNamingContainer, control.GetType().Name, control.ID));
}
foundControl = currentContainer.FindControl(controlID);
}
return foundControl;
}
///
// return true if the two string arrays have the same members
///
public static bool CompareStringArrays(string[] stringA, string[] stringB) {
if (stringA == null && stringB == null) {
return true;
}
if (stringA == null || stringB == null) {
return false;
}
if (stringA.Length != stringB.Length) {
return false;
}
for (int i = 0; i < stringA.Length; i++) {
if (!String.Equals(stringA[i], stringB[i], StringComparison.Ordinal)) {
return false;
}
}
return true;
}
// Returns true for types that can be automatically databound in controls such as
// GridView and DetailsView. Bindable types are simple types, such as primitives, strings,
// and nullable primitives.
public static bool IsBindableType(Type type) {
if (type == null) {
return false;
}
Type underlyingType = Nullable.GetUnderlyingType(type);
if (underlyingType != null) {
// If the type is Nullable then it has an underlying type, in which case
// we want to check the underlying type for bindability.
type = underlyingType;
}
return (type.IsPrimitive ||
(type == typeof(string)) ||
(type == typeof(DateTime)) ||
(type == typeof(Decimal)) ||
(type == typeof(Guid)) ||
// support for new SqlServer 2008 types:
(type == typeof(DateTimeOffset)) ||
(type == typeof(TimeSpan)));
}
internal static void ExtractValuesFromBindableControls(IOrderedDictionary dictionary, Control container) {
IBindableControl bindableControl = container as IBindableControl;
if (bindableControl != null) {
bindableControl.ExtractValues(dictionary);
}
foreach (Control childControl in container.Controls) {
ExtractValuesFromBindableControls(dictionary, childControl);
}
}
}
}
// 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.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Security.Permissions;
using System.Web.Util;
///
/// Helper class for DataBoundControls and v1 data controls.
/// This is also used by ControlParameter to find its associated
/// control.
///
internal static class DataBoundControlHelper {
///
/// Walks up the stack of NamingContainers starting at 'control' to find a control with the ID 'controlID'.
///
public static Control FindControl(Control control, string controlID) {
Debug.Assert(control != null, "control should not be null");
Debug.Assert(!String.IsNullOrEmpty(controlID), "controlID should not be empty");
Control currentContainer = control;
Control foundControl = null;
if (control == control.Page) {
// If we get to the Page itself while we're walking up the
// hierarchy, just return whatever item we find (if anything)
// since we can't walk any higher.
return control.FindControl(controlID);
}
while (foundControl == null && currentContainer != control.Page) {
currentContainer = currentContainer.NamingContainer;
if (currentContainer == null) {
throw new HttpException(SR.GetString(SR.DataBoundControlHelper_NoNamingContainer, control.GetType().Name, control.ID));
}
foundControl = currentContainer.FindControl(controlID);
}
return foundControl;
}
///
// return true if the two string arrays have the same members
///
public static bool CompareStringArrays(string[] stringA, string[] stringB) {
if (stringA == null && stringB == null) {
return true;
}
if (stringA == null || stringB == null) {
return false;
}
if (stringA.Length != stringB.Length) {
return false;
}
for (int i = 0; i < stringA.Length; i++) {
if (!String.Equals(stringA[i], stringB[i], StringComparison.Ordinal)) {
return false;
}
}
return true;
}
// Returns true for types that can be automatically databound in controls such as
// GridView and DetailsView. Bindable types are simple types, such as primitives, strings,
// and nullable primitives.
public static bool IsBindableType(Type type) {
if (type == null) {
return false;
}
Type underlyingType = Nullable.GetUnderlyingType(type);
if (underlyingType != null) {
// If the type is Nullable then it has an underlying type, in which case
// we want to check the underlying type for bindability.
type = underlyingType;
}
return (type.IsPrimitive ||
(type == typeof(string)) ||
(type == typeof(DateTime)) ||
(type == typeof(Decimal)) ||
(type == typeof(Guid)) ||
// support for new SqlServer 2008 types:
(type == typeof(DateTimeOffset)) ||
(type == typeof(TimeSpan)));
}
internal static void ExtractValuesFromBindableControls(IOrderedDictionary dictionary, Control container) {
IBindableControl bindableControl = container as IBindableControl;
if (bindableControl != null) {
bindableControl.ExtractValues(dictionary);
}
foreach (Control childControl in container.Controls) {
ExtractValuesFromBindableControls(dictionary, childControl);
}
}
}
}
// 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
- connectionpool.cs
- ColumnResult.cs
- PrivilegedConfigurationManager.cs
- NativeRightsManagementAPIsStructures.cs
- WindowsFormsSynchronizationContext.cs
- SByteConverter.cs
- FaultConverter.cs
- BitVec.cs
- WebPartMinimizeVerb.cs
- DiscoveryProxy.cs
- ComponentSerializationService.cs
- EventPropertyMap.cs
- AttributeEmitter.cs
- EventLogTraceListener.cs
- FlowLayoutSettings.cs
- IDQuery.cs
- CustomActivityDesigner.cs
- StateItem.cs
- HealthMonitoringSection.cs
- SqlTypeSystemProvider.cs
- ADMembershipUser.cs
- MemoryFailPoint.cs
- xsdvalidator.cs
- x509store.cs
- Expression.cs
- PasswordTextNavigator.cs
- DetailsViewRow.cs
- MetadataItemCollectionFactory.cs
- TabControlEvent.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- xdrvalidator.cs
- CompressEmulationStream.cs
- Soap.cs
- ProgressBarAutomationPeer.cs
- WriteStateInfoBase.cs
- StringFreezingAttribute.cs
- CompositeCollection.cs
- BitmapSizeOptions.cs
- XmlElementCollection.cs
- GlobalizationSection.cs
- ExtendedProperty.cs
- SerializerProvider.cs
- XmlObjectSerializerReadContextComplex.cs
- ScriptReferenceBase.cs
- TextContainer.cs
- ForeignConstraint.cs
- ButtonStandardAdapter.cs
- TextEditorCopyPaste.cs
- MetadataCache.cs
- LinqDataSourceDeleteEventArgs.cs
- ConfigurationUtility.cs
- ObjectHandle.cs
- ScriptReferenceEventArgs.cs
- XmlC14NWriter.cs
- WebColorConverter.cs
- DrawingBrush.cs
- ZoneIdentityPermission.cs
- TCPClient.cs
- ServiceOperationParameter.cs
- ConnectivityStatus.cs
- WriterOutput.cs
- TextTreeObjectNode.cs
- DataGridPagingPage.cs
- CodeTypeReference.cs
- BuilderInfo.cs
- LicenseManager.cs
- smtppermission.cs
- ResXBuildProvider.cs
- XmlAnyElementAttribute.cs
- StreamingContext.cs
- SortQuery.cs
- StackOverflowException.cs
- ObjectParameter.cs
- JsonClassDataContract.cs
- TaiwanLunisolarCalendar.cs
- Utils.cs
- Setter.cs
- PackageRelationshipCollection.cs
- TreeNodeEventArgs.cs
- TcpConnectionPool.cs
- InternalPermissions.cs
- UnaryNode.cs
- ViewManager.cs
- DesignerVerb.cs
- FloaterBaseParaClient.cs
- DurableInstanceManager.cs
- CompiledQueryCacheKey.cs
- MenuAdapter.cs
- DataBinding.cs
- ReadingWritingEntityEventArgs.cs
- CategoriesDocument.cs
- ExpressionConverter.cs
- ServiceEndpointCollection.cs
- QueryCoreOp.cs
- SelfIssuedAuthRSAPKCS1SignatureDeformatter.cs
- ZipPackage.cs
- DataBoundControlParameterTarget.cs
- CommandBinding.cs
- DrawingDrawingContext.cs
- ContentType.cs