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
- DetailsViewPagerRow.cs
- ZipIOExtraFieldZip64Element.cs
- XmlWrappingReader.cs
- RadialGradientBrush.cs
- WorkflowPersistenceService.cs
- HwndSubclass.cs
- InvalidDataContractException.cs
- ColorMap.cs
- XmlSchemaType.cs
- _AutoWebProxyScriptEngine.cs
- xsdvalidator.cs
- UserMapPath.cs
- ProgressBarAutomationPeer.cs
- PageParserFilter.cs
- Point3DIndependentAnimationStorage.cs
- Set.cs
- TreeBuilderXamlTranslator.cs
- EmptyElement.cs
- TreeNode.cs
- StatusBar.cs
- ChannelTracker.cs
- RuntimeWrappedException.cs
- MultiAsyncResult.cs
- ArrayConverter.cs
- FixedSOMFixedBlock.cs
- SchemaContext.cs
- UdpDuplexChannel.cs
- Query.cs
- ContentElement.cs
- WinFormsSpinner.cs
- XmlSchemaNotation.cs
- AmbientLight.cs
- TdsParameterSetter.cs
- ConcurrentQueue.cs
- MediaElementAutomationPeer.cs
- ToolStripItemClickedEventArgs.cs
- httpstaticobjectscollection.cs
- NoneExcludedImageIndexConverter.cs
- Internal.cs
- FormsAuthenticationConfiguration.cs
- NameValuePermission.cs
- TreeNodeClickEventArgs.cs
- ImageIndexConverter.cs
- ImageAutomationPeer.cs
- ExpressionValueEditor.cs
- XmlValidatingReaderImpl.cs
- DocumentViewerBase.cs
- SByteStorage.cs
- ItemCheckedEvent.cs
- UnitySerializationHolder.cs
- Floater.cs
- DataSet.cs
- XmlSerializerFactory.cs
- XmlComplianceUtil.cs
- Baml2006ReaderSettings.cs
- GlobalizationAssembly.cs
- DataGridCommandEventArgs.cs
- CodeVariableDeclarationStatement.cs
- Point3DIndependentAnimationStorage.cs
- ToolStripDropDownMenu.cs
- SortDescription.cs
- StatusBarDrawItemEvent.cs
- Cursor.cs
- SemanticValue.cs
- TextModifier.cs
- graph.cs
- BitmapDecoder.cs
- ToolStripRenderEventArgs.cs
- FigureParaClient.cs
- IssuanceLicense.cs
- Char.cs
- SectionXmlInfo.cs
- TypefaceCollection.cs
- HttpModule.cs
- Lease.cs
- CustomTypeDescriptor.cs
- SchemaInfo.cs
- InputReportEventArgs.cs
- HitTestWithPointDrawingContextWalker.cs
- WindowsProgressbar.cs
- XmlBoundElement.cs
- ToolStripContainer.cs
- X509Utils.cs
- PriorityQueue.cs
- ValidationHelper.cs
- ListViewUpdatedEventArgs.cs
- Section.cs
- ListItemsPage.cs
- SspiHelper.cs
- DataConnectionHelper.cs
- MethodBuilderInstantiation.cs
- hwndwrapper.cs
- HtmlShimManager.cs
- AutoGeneratedFieldProperties.cs
- DataServiceQueryContinuation.cs
- CodeDomDecompiler.cs
- SocketElement.cs
- KeyboardNavigation.cs
- MasterPageCodeDomTreeGenerator.cs
- URI.cs