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
- PathFigureCollection.cs
- SID.cs
- RemoteWebConfigurationHost.cs
- Expr.cs
- FlowDocumentFormatter.cs
- VectorAnimationUsingKeyFrames.cs
- PageContent.cs
- FixedPageProcessor.cs
- ButtonBaseAdapter.cs
- TextAction.cs
- IISUnsafeMethods.cs
- DotExpr.cs
- MailMessage.cs
- SafeNativeMethods.cs
- CapabilitiesSection.cs
- AggregateException.cs
- listitem.cs
- DnsPermission.cs
- RelatedView.cs
- Model3D.cs
- BinaryUtilClasses.cs
- ConnectionPoint.cs
- SchemaSetCompiler.cs
- CodeConditionStatement.cs
- EdmItemError.cs
- AssemblyBuilderData.cs
- EventBuilder.cs
- MailWebEventProvider.cs
- DesignerTransaction.cs
- RelationshipEndMember.cs
- FamilyTypeface.cs
- _ConnectOverlappedAsyncResult.cs
- EpmContentDeSerializerBase.cs
- WebPartEventArgs.cs
- GeometryGroup.cs
- ResourceDisplayNameAttribute.cs
- TTSVoice.cs
- AccessDataSource.cs
- TransformValueSerializer.cs
- CompositeScriptReferenceEventArgs.cs
- EncryptedXml.cs
- IpcChannelHelper.cs
- DataGridViewIntLinkedList.cs
- CheckedPointers.cs
- NameGenerator.cs
- AnnotationAdorner.cs
- DataContractJsonSerializer.cs
- ScriptResourceHandler.cs
- DoWorkEventArgs.cs
- UnsafeNativeMethods.cs
- ServiceHttpHandlerFactory.cs
- log.cs
- UniqueIdentifierService.cs
- CodeGenerator.cs
- OrderingInfo.cs
- ValuePattern.cs
- RegexCharClass.cs
- BinaryObjectInfo.cs
- UnsafeCollabNativeMethods.cs
- ArrangedElementCollection.cs
- ServiceOperationParameter.cs
- CounterCreationDataCollection.cs
- _SslState.cs
- OracleString.cs
- DesignerVerb.cs
- WorkflowItemPresenter.cs
- X509Certificate2.cs
- SqlDataSourceFilteringEventArgs.cs
- HostingEnvironmentException.cs
- ProvideValueServiceProvider.cs
- PatternMatcher.cs
- Package.cs
- COM2ICategorizePropertiesHandler.cs
- StyleCollection.cs
- TypeUtil.cs
- CompilerScopeManager.cs
- CultureInfo.cs
- UnsafeNativeMethods.cs
- MultiBinding.cs
- SecurityHeaderElementInferenceEngine.cs
- PnrpPeerResolver.cs
- GPRECTF.cs
- WindowsToolbar.cs
- ScrollBarRenderer.cs
- ConnectionPoint.cs
- Authorization.cs
- EntityDesignPluralizationHandler.cs
- CollectionExtensions.cs
- LineServices.cs
- TableLayoutColumnStyleCollection.cs
- StyleBamlRecordReader.cs
- mactripleDES.cs
- WebDisplayNameAttribute.cs
- StylusDevice.cs
- XmlSerializationWriter.cs
- SqlBooleanizer.cs
- BinarySerializer.cs
- Metadata.cs
- EnumerableValidator.cs
- XmlNodeChangedEventManager.cs