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
- StickyNoteHelper.cs
- ScalarOps.cs
- CustomErrorsSectionWrapper.cs
- ToolStripDropDownButton.cs
- bindurihelper.cs
- TimeSpanStorage.cs
- SQLInt32.cs
- ConfigurationSettings.cs
- EdmFunctions.cs
- QueryTaskGroupState.cs
- Size3DValueSerializer.cs
- AppearanceEditorPart.cs
- OleCmdHelper.cs
- ImplicitInputBrush.cs
- SQLMembershipProvider.cs
- WindowsButton.cs
- ToolConsole.cs
- MenuItem.cs
- SoapFormatterSinks.cs
- AddingNewEventArgs.cs
- BamlLocalizabilityResolver.cs
- LifetimeManager.cs
- FormatConvertedBitmap.cs
- Missing.cs
- IisTraceWebEventProvider.cs
- ExtenderControl.cs
- XmlSerializationReader.cs
- X509ChainElement.cs
- CommandEventArgs.cs
- AssemblyFilter.cs
- MarkupObject.cs
- QilInvokeLateBound.cs
- ToolBar.cs
- DataBindingsDialog.cs
- diagnosticsswitches.cs
- HtmlMobileTextWriter.cs
- SafeNativeMethods.cs
- SecuritySessionFilter.cs
- ValueConversionAttribute.cs
- DecimalConstantAttribute.cs
- MailHeaderInfo.cs
- DragDeltaEventArgs.cs
- ReadOnlyKeyedCollection.cs
- PrintingPermission.cs
- DefaultProxySection.cs
- RelationshipConverter.cs
- LocatorBase.cs
- ItemCollection.cs
- EventProviderWriter.cs
- IERequestCache.cs
- XmlStreamStore.cs
- SmiEventStream.cs
- CodeFieldReferenceExpression.cs
- ListManagerBindingsCollection.cs
- Membership.cs
- InputBinding.cs
- TreeNodeCollection.cs
- RolePrincipal.cs
- HttpRequestWrapper.cs
- MdbDataFileEditor.cs
- InputLangChangeRequestEvent.cs
- BooleanAnimationBase.cs
- SizeChangedInfo.cs
- cookieexception.cs
- DocumentViewerBaseAutomationPeer.cs
- PerfService.cs
- EventLogConfiguration.cs
- UriWriter.cs
- SecurityUniqueId.cs
- PreProcessor.cs
- XmlChildNodes.cs
- ComMethodElement.cs
- ToolStripArrowRenderEventArgs.cs
- DocumentReference.cs
- ComplexTypeEmitter.cs
- ListViewItemSelectionChangedEvent.cs
- TableLayoutStyleCollection.cs
- TypeHelpers.cs
- DependencyPropertyKind.cs
- ReaderWriterLock.cs
- ByteKeyFrameCollection.cs
- IList.cs
- DataGridViewRowHeaderCell.cs
- ChtmlImageAdapter.cs
- Table.cs
- FunctionUpdateCommand.cs
- NameTable.cs
- ClientUrlResolverWrapper.cs
- InstanceDataCollection.cs
- BitmapEffectDrawingContextState.cs
- ResourceDictionary.cs
- ViewCellRelation.cs
- ExpressionWriter.cs
- ExternalCalls.cs
- WebException.cs
- MetaModel.cs
- WCFServiceClientProxyGenerator.cs
- WindowsAuthenticationEventArgs.cs
- HttpWrapper.cs
- XPathConvert.cs