Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / DynamicData / DynamicData / FilterFactory.cs / 1305376 / FilterFactory.cs
using System.Diagnostics; using System.Globalization; using System.Web.Compilation; using System.Web.Hosting; namespace System.Web.DynamicData { public class FilterFactory { private const string s_defaultFiltersFolder = "Filters"; private const string s_booleanFilter = "Boolean"; private const string s_foreignKeyFilter = "ForeignKey"; private const string s_enumerationFilter = "Enumeration"; private TemplateFactory _templateFactory; public FilterFactory() { _templateFactory = new TemplateFactory(s_defaultFiltersFolder); } // for testing purposes internal FilterFactory(VirtualPathProvider vpp) : this() { _templateFactory.VirtualPathProvider = vpp; } internal string FilterFolderVirtualPath { get { return _templateFactory.TemplateFolderVirtualPath; } set { _templateFactory.TemplateFolderVirtualPath = value; } } internal void Initialize(MetaModel model) { Debug.Assert(model != null); _templateFactory.Model = model; } private string GetDefaultFilterControlName(MetaColumn column) { if (column is MetaForeignKeyColumn) { return s_foreignKeyFilter; } else if (column.ColumnType == typeof(bool)) { return s_booleanFilter; } else if (column.GetEnumType() != null) { return s_enumerationFilter; } else { throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, Resources.DynamicDataResources.FilterFactory_ColumnHasNoDefaultFilter, column.Name, column.Table.Name)); } } public virtual QueryableFilterUserControl CreateFilterControl(MetaColumn column, string filterUIHint) { if (column == null) { throw new ArgumentNullException("column"); } string filterTemplatePath = GetFilterVirtualPathWithCaching(column, filterUIHint); Debug.Assert(filterTemplatePath != null); QueryableFilterUserControl filter = (QueryableFilterUserControl)BuildManager.CreateInstanceFromVirtualPath( filterTemplatePath, typeof(QueryableFilterUserControl)); return filter; } // internal for unit testing internal string GetFilterVirtualPathWithCaching(MetaColumn column, string filterUIHint) { Debug.Assert(column != null); long cacheKey = Misc.CombineHashCodes(column, filterUIHint); return _templateFactory.GetTemplatePath(cacheKey, delegate() { return GetFilterVirtualPath(column, filterUIHint); }); } public virtual string GetFilterVirtualPath(MetaColumn column, string filterUIHint) { if (column == null) { throw new ArgumentNullException("column"); } string filterControlName = BuildFilterVirtualPath(column, filterUIHint); string filterTemplatePath = VirtualPathUtility.Combine(FilterFolderVirtualPath, filterControlName + ".ascx"); return filterTemplatePath; } private string BuildFilterVirtualPath(MetaColumn column, string filterUIHint) { string filterControlName = null; if (!String.IsNullOrEmpty(filterUIHint)) { filterControlName = filterUIHint; } else if (!String.IsNullOrEmpty(column.FilterUIHint)) { filterControlName = column.FilterUIHint; } filterControlName = filterControlName ?? GetDefaultFilterControlName(column); return filterControlName; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DeploymentSection.cs
- NetworkAddressChange.cs
- Pair.cs
- VirtualPath.cs
- InstanceStore.cs
- RuleProcessor.cs
- EntryPointNotFoundException.cs
- DeviceSpecificChoiceCollection.cs
- SchemaNamespaceManager.cs
- AccessedThroughPropertyAttribute.cs
- _ProxyRegBlob.cs
- TreeNodeCollection.cs
- SiteMapDataSource.cs
- DrawingDrawingContext.cs
- RenderTargetBitmap.cs
- OrderPreservingSpoolingTask.cs
- SrgsGrammar.cs
- MsmqIntegrationElement.cs
- DataControlReferenceCollection.cs
- KnownTypeHelper.cs
- QuadTree.cs
- invalidudtexception.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- Message.cs
- WebScriptEnablingBehavior.cs
- IdnElement.cs
- RoutedEventArgs.cs
- PropertyTabChangedEvent.cs
- ServiceDefaults.cs
- SafeProcessHandle.cs
- FactoryGenerator.cs
- FormsAuthentication.cs
- SemaphoreFullException.cs
- HttpProfileBase.cs
- CancellationTokenRegistration.cs
- Latin1Encoding.cs
- ISFTagAndGuidCache.cs
- FileAccessException.cs
- SamlConditions.cs
- SetterTriggerConditionValueConverter.cs
- NetNamedPipeBindingCollectionElement.cs
- SolidBrush.cs
- CompressEmulationStream.cs
- MergablePropertyAttribute.cs
- FormatterServices.cs
- ReadOnlyPropertyMetadata.cs
- MatcherBuilder.cs
- StylusDevice.cs
- EditableRegion.cs
- handlecollector.cs
- entitydatasourceentitysetnameconverter.cs
- BamlRecordReader.cs
- Stroke2.cs
- EFTableProvider.cs
- EncoderFallback.cs
- TypeDescriptorFilterService.cs
- DynamicQueryStringParameter.cs
- SmiTypedGetterSetter.cs
- WebPartVerbCollection.cs
- StringValidator.cs
- SynchronizedReadOnlyCollection.cs
- ArgumentException.cs
- CapiSafeHandles.cs
- InvalidEnumArgumentException.cs
- ToolboxItemSnapLineBehavior.cs
- ServiceOperation.cs
- MulticastNotSupportedException.cs
- RemoteX509Token.cs
- InvokeMethodActivityDesigner.cs
- DataSourceXmlSerializationAttribute.cs
- SafeSystemMetrics.cs
- SiteMapDataSource.cs
- ServiceChannel.cs
- Latin1Encoding.cs
- FileDialogCustomPlace.cs
- NegationPusher.cs
- HtmlUtf8RawTextWriter.cs
- RelationshipFixer.cs
- DataSourceExpression.cs
- DataControlFieldCollection.cs
- HostedTransportConfigurationManager.cs
- DuplicateContext.cs
- OracleException.cs
- BooleanKeyFrameCollection.cs
- SchemaNamespaceManager.cs
- TextEffect.cs
- COM2PictureConverter.cs
- ParserContext.cs
- DataGridViewImageColumn.cs
- FontCacheLogic.cs
- CacheHelper.cs
- SymmetricKeyWrap.cs
- PerspectiveCamera.cs
- Triplet.cs
- StrokeNodeEnumerator.cs
- AutomationProperty.cs
- TemplatePropertyEntry.cs
- Attributes.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- CacheModeConverter.cs