Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / WebControls / DataBoundControlHelper.cs / 2 / DataBoundControlHelper.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.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)));
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolBarPanel.cs
- FontCacheUtil.cs
- StringPropertyBuilder.cs
- DateTimePicker.cs
- ScriptComponentDescriptor.cs
- AxHost.cs
- CommonRemoteMemoryBlock.cs
- ApplicationServiceHelper.cs
- Overlapped.cs
- PolyLineSegment.cs
- sqlpipe.cs
- BitmapImage.cs
- GridItemCollection.cs
- JsonByteArrayDataContract.cs
- TextCompositionManager.cs
- MenuBase.cs
- BuildResultCache.cs
- DataGridViewCellCancelEventArgs.cs
- ECDiffieHellman.cs
- PageEventArgs.cs
- cryptoapiTransform.cs
- ErrorStyle.cs
- Int64Animation.cs
- PageContentCollection.cs
- __ConsoleStream.cs
- FtpWebRequest.cs
- UpdateExpressionVisitor.cs
- RichListBox.cs
- BindingCompleteEventArgs.cs
- AssemblyFilter.cs
- VoiceChangeEventArgs.cs
- IsolatedStoragePermission.cs
- HttpServerUtilityBase.cs
- CacheEntry.cs
- SqlInternalConnectionSmi.cs
- CallbackBehaviorAttribute.cs
- TypeInfo.cs
- ScrollBar.cs
- _ListenerResponseStream.cs
- SignatureDescription.cs
- EncoderExceptionFallback.cs
- FastEncoderWindow.cs
- XpsS0ValidatingLoader.cs
- ComboBoxRenderer.cs
- Operators.cs
- WebServiceMethodData.cs
- NativeMethods.cs
- ApplicationTrust.cs
- DropDownButton.cs
- ClassData.cs
- XmlNodeList.cs
- EntityCollection.cs
- AssemblyBuilder.cs
- TrustLevelCollection.cs
- CustomErrorsSection.cs
- InputReferenceExpression.cs
- DeploymentSection.cs
- CompensateDesigner.cs
- BitmapVisualManager.cs
- ProgressBarHighlightConverter.cs
- BaseConfigurationRecord.cs
- RenderingEventArgs.cs
- CustomCredentialPolicy.cs
- StatusBar.cs
- DataGridViewRowEventArgs.cs
- ScriptRegistrationManager.cs
- StackOverflowException.cs
- ToolBarPanel.cs
- Membership.cs
- ResourceDefaultValueAttribute.cs
- ObjectDataSourceEventArgs.cs
- ContentPropertyAttribute.cs
- MemberJoinTreeNode.cs
- ThreadAttributes.cs
- WindowShowOrOpenTracker.cs
- TailPinnedEventArgs.cs
- Vector.cs
- ExtenderHelpers.cs
- SqlExpressionNullability.cs
- ResizeGrip.cs
- PlatformCulture.cs
- XmlEncApr2001.cs
- DataObjectFieldAttribute.cs
- Trace.cs
- InputBinding.cs
- PathStreamGeometryContext.cs
- XmlAttributeProperties.cs
- HttpApplicationFactory.cs
- DesignerDataSourceView.cs
- Compiler.cs
- ResourceIDHelper.cs
- DataControlFieldCell.cs
- Error.cs
- EqualityArray.cs
- webeventbuffer.cs
- CodePageEncoding.cs
- ParserHooks.cs
- XamlReader.cs
- XmlUtil.cs
- MultipartIdentifier.cs