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
- ConfigurationHandlersInstallComponent.cs
- OrCondition.cs
- ResourceIDHelper.cs
- UrlMappingsSection.cs
- Constraint.cs
- MessageFilter.cs
- DataGridViewImageCell.cs
- PrintControllerWithStatusDialog.cs
- XpsResourcePolicy.cs
- DetailsViewUpdateEventArgs.cs
- XmlSchemaSimpleTypeRestriction.cs
- PrimaryKeyTypeConverter.cs
- DiscardableAttribute.cs
- RenderDataDrawingContext.cs
- KeyMatchBuilder.cs
- ReadOnlyHierarchicalDataSource.cs
- ProcessInfo.cs
- OperationCanceledException.cs
- ValueChangedEventManager.cs
- ChunkedMemoryStream.cs
- SkewTransform.cs
- ZipIOCentralDirectoryFileHeader.cs
- BaseCollection.cs
- SafeCryptContextHandle.cs
- FolderBrowserDialog.cs
- ComPlusTypeLoader.cs
- XmlSignatureProperties.cs
- DataGridPageChangedEventArgs.cs
- DefaultAssemblyResolver.cs
- ArrayExtension.cs
- NoResizeSelectionBorderGlyph.cs
- XmlCollation.cs
- WasAdminWrapper.cs
- EntityDataSourceWizardForm.cs
- CqlParserHelpers.cs
- MissingManifestResourceException.cs
- OleDbPropertySetGuid.cs
- HelpInfo.cs
- NewArray.cs
- ResXResourceReader.cs
- ActivityCollectionMarkupSerializer.cs
- ApplicationManager.cs
- FactoryId.cs
- HtmlElementEventArgs.cs
- GeometryModel3D.cs
- OperationCanceledException.cs
- CollectionChangedEventManager.cs
- RepeaterItem.cs
- DataGridViewTopLeftHeaderCell.cs
- ReadOnlyObservableCollection.cs
- UpdateRecord.cs
- DataGridDesigner.cs
- ArrayWithOffset.cs
- PaintValueEventArgs.cs
- WmiPutTraceRecord.cs
- TimeSpan.cs
- ArgIterator.cs
- DecoderBestFitFallback.cs
- HtmlMobileTextWriter.cs
- BidPrivateBase.cs
- SystemResourceKey.cs
- EntityDataSourceContainerNameItem.cs
- OpCellTreeNode.cs
- PartialCachingAttribute.cs
- ProtocolInformationWriter.cs
- Parsers.cs
- DependencyPropertyConverter.cs
- GenericsInstances.cs
- SchemaElementDecl.cs
- CapiSafeHandles.cs
- AsymmetricAlgorithm.cs
- FormsIdentity.cs
- SafeNativeMethods.cs
- EventBuilder.cs
- OrderedDictionaryStateHelper.cs
- PropertyGroupDescription.cs
- DebuggerAttributes.cs
- PreviewKeyDownEventArgs.cs
- sqlser.cs
- Journaling.cs
- DragCompletedEventArgs.cs
- RectAnimationBase.cs
- NetworkStream.cs
- AppDomainCompilerProxy.cs
- wmiutil.cs
- ObjectHelper.cs
- Registry.cs
- SmtpClient.cs
- QueryOpeningEnumerator.cs
- AccessedThroughPropertyAttribute.cs
- CheckStoreFileValidityRequest.cs
- PageAdapter.cs
- PeerTransportListenAddressValidator.cs
- DynamicDataManager.cs
- MenuItemStyleCollection.cs
- Point.cs
- Int32Rect.cs
- ResourceDescriptionAttribute.cs
- SpecialNameAttribute.cs
- PeerCollaborationPermission.cs