Code:
/ 4.0 / 4.0 / 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. 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
- HtmlInputImage.cs
- ContainerTracking.cs
- UIPermission.cs
- Underline.cs
- DocumentViewerBase.cs
- VectorAnimationUsingKeyFrames.cs
- SqlEnums.cs
- AuthenticatingEventArgs.cs
- ItemCheckedEvent.cs
- DocumentSchemaValidator.cs
- XAMLParseException.cs
- TabPage.cs
- DecoderReplacementFallback.cs
- WebPartAddingEventArgs.cs
- WebProxyScriptElement.cs
- XmlEncoding.cs
- CqlParserHelpers.cs
- TemplateBamlTreeBuilder.cs
- XamlUtilities.cs
- CqlIdentifiers.cs
- ObjectSpanRewriter.cs
- WebUtility.cs
- ScrollItemProviderWrapper.cs
- XPathCompileException.cs
- ServicePointManagerElement.cs
- WindowProviderWrapper.cs
- XmlDataSource.cs
- streamingZipPartStream.cs
- MonthCalendar.cs
- CalendarData.cs
- HMACSHA384.cs
- CngAlgorithm.cs
- SqlDependencyUtils.cs
- NotCondition.cs
- MergeLocalizationDirectives.cs
- ExtensionSimplifierMarkupObject.cs
- SimpleWebHandlerParser.cs
- DesignerAdapterUtil.cs
- TypeInfo.cs
- ListViewEditEventArgs.cs
- EnumValidator.cs
- Model3DGroup.cs
- WebHeaderCollection.cs
- DataRowExtensions.cs
- ConfigurationSettings.cs
- AxHostDesigner.cs
- WindowsListViewScroll.cs
- ObjectNotFoundException.cs
- QuaternionKeyFrameCollection.cs
- DependencySource.cs
- ShaperBuffers.cs
- DynamicDocumentPaginator.cs
- SqlBulkCopy.cs
- ControlCollection.cs
- PolyLineSegment.cs
- SoapConverter.cs
- VisualTreeHelper.cs
- HttpHandlerActionCollection.cs
- SplineKeyFrames.cs
- PasswordRecovery.cs
- FileUpload.cs
- FrameworkReadOnlyPropertyMetadata.cs
- WebPartPersonalization.cs
- PtsContext.cs
- MissingMethodException.cs
- _OSSOCK.cs
- DelegateBodyWriter.cs
- HostingMessageProperty.cs
- SqlGatherProducedAliases.cs
- Trace.cs
- MSAAEventDispatcher.cs
- XsltLibrary.cs
- NumberEdit.cs
- PeerName.cs
- SignatureHelper.cs
- IISUnsafeMethods.cs
- ModuleConfigurationInfo.cs
- HtmlProps.cs
- StringSorter.cs
- Tablet.cs
- CodeBlockBuilder.cs
- AsnEncodedData.cs
- Rect3D.cs
- QueryOperationResponseOfT.cs
- PeerContact.cs
- ConfigurationElementCollection.cs
- BitmapCodecInfo.cs
- DataRecord.cs
- PerformanceCountersElement.cs
- ZipIOExtraFieldElement.cs
- DataTablePropertyDescriptor.cs
- Cursors.cs
- UriTemplateClientFormatter.cs
- RangeBase.cs
- TextBoxLine.cs
- WebPartActionVerb.cs
- ZipIOExtraField.cs
- RuleSetBrowserDialog.cs
- DescriptionAttribute.cs
- GridViewCellAutomationPeer.cs