Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / DynamicData / DynamicData / DynamicFilter.cs / 1305376 / DynamicFilter.cs
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Web.Compilation;
using System.Web.UI;
using System.Web.UI.WebControls;
#if !ORYX_VNEXT
using System.Web.UI.WebControls.Expressions;
using System.Web.Resources;
#else
using Microsoft.Web.Data.UI.WebControls.Expressions;
using Microsoft.Web.Data.UI.WebControls;
#endif
namespace System.Web.DynamicData {
public class DynamicFilter : Control, IFilterExpressionProvider {
private HttpContextBase _context;
private IQueryableDataSource _dataSource;
private Func _filterLoader;
private QueryableFilterUserControl _filterUserControl;
protected internal MetaColumn Column {
get;
private set;
}
///
/// The name of the column that this control handles
///
[
Category("Data"),
DefaultValue(""),
ResourceDescription("DynamicFilter_DataField")
]
public string DataField {
get {
object o = ViewState["DataField"];
return (o == null) ? String.Empty : (string)o;
}
set {
ViewState["DataField"] = value;
}
}
///
/// An optional property that can be used to override the column's default default filter UI hint.
///
[
Category("Behavior"),
DefaultValue(""),
ResourceDescription("DynamicFilter_FilterUIHint")
]
public string FilterUIHint {
get {
object o = ViewState["FilterUIHint"];
return (o == null) ? String.Empty : (string)o;
}
set {
ViewState["FilterUIHint"] = value;
}
}
public DynamicFilter()
: this(CreateUserControl) {
}
// internal for unit testing
internal DynamicFilter(Func filterLoader) {
_filterLoader = filterLoader;
}
// internal for unit testing
internal static QueryableFilterUserControl CreateUserControl(MetaColumn column, string filterUiHint) {
return column.Model.FilterFactory.CreateFilterControl(column, filterUiHint);
}
internal new HttpContextBase Context {
get {
return _context ?? new HttpContextWrapper(HttpContext.Current);
}
set {
_context = value;
}
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public event EventHandler FilterChanged;
///
/// Returns the filter template that was created for this control.
///
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Control FilterTemplate {
get {
return _filterUserControl;
}
}
protected override void Render(HtmlTextWriter writer) {
if (DesignMode) {
writer.Write("[" + GetType().Name + "]");
}
else {
base.Render(writer);
}
}
private void EnsureInit(IQueryableDataSource dataSource) {
if (_filterUserControl == null) {
MetaTable table = DynamicDataExtensions.GetMetaTable(dataSource, Context);
Column = table.GetColumn(DataField);
_filterUserControl = _filterLoader(Column, FilterUIHint);
_filterUserControl.Initialize(Column, dataSource, Context);
_filterUserControl.FilterChanged += new EventHandler(Child_FilterChanged);
Controls.Add(_filterUserControl);
}
}
private void Child_FilterChanged(object sender, EventArgs e) {
EventHandler eventHandler = FilterChanged;
if (eventHandler != null) {
eventHandler(sender, e);
}
}
internal void Initialize(IQueryableDataSource dataSource) {
Debug.Assert(dataSource != null);
EnsureInit(dataSource);
}
#region IFilterExpressionProvider Members
void IFilterExpressionProvider.Initialize(IQueryableDataSource dataSource) {
if (dataSource == null) {
throw new ArgumentNullException("dataSource");
}
_dataSource = dataSource;
Page.InitComplete += new EventHandler(Page_InitComplete);
}
void Page_InitComplete(object sender, EventArgs e) {
Debug.Assert(_dataSource != null);
EnsureInit(_dataSource);
}
IQueryable IFilterExpressionProvider.GetQueryable(IQueryable source) {
return _filterUserControl.GetQueryable(source);
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Web.Compilation;
using System.Web.UI;
using System.Web.UI.WebControls;
#if !ORYX_VNEXT
using System.Web.UI.WebControls.Expressions;
using System.Web.Resources;
#else
using Microsoft.Web.Data.UI.WebControls.Expressions;
using Microsoft.Web.Data.UI.WebControls;
#endif
namespace System.Web.DynamicData {
public class DynamicFilter : Control, IFilterExpressionProvider {
private HttpContextBase _context;
private IQueryableDataSource _dataSource;
private Func _filterLoader;
private QueryableFilterUserControl _filterUserControl;
protected internal MetaColumn Column {
get;
private set;
}
///
/// The name of the column that this control handles
///
[
Category("Data"),
DefaultValue(""),
ResourceDescription("DynamicFilter_DataField")
]
public string DataField {
get {
object o = ViewState["DataField"];
return (o == null) ? String.Empty : (string)o;
}
set {
ViewState["DataField"] = value;
}
}
///
/// An optional property that can be used to override the column's default default filter UI hint.
///
[
Category("Behavior"),
DefaultValue(""),
ResourceDescription("DynamicFilter_FilterUIHint")
]
public string FilterUIHint {
get {
object o = ViewState["FilterUIHint"];
return (o == null) ? String.Empty : (string)o;
}
set {
ViewState["FilterUIHint"] = value;
}
}
public DynamicFilter()
: this(CreateUserControl) {
}
// internal for unit testing
internal DynamicFilter(Func filterLoader) {
_filterLoader = filterLoader;
}
// internal for unit testing
internal static QueryableFilterUserControl CreateUserControl(MetaColumn column, string filterUiHint) {
return column.Model.FilterFactory.CreateFilterControl(column, filterUiHint);
}
internal new HttpContextBase Context {
get {
return _context ?? new HttpContextWrapper(HttpContext.Current);
}
set {
_context = value;
}
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public event EventHandler FilterChanged;
///
/// Returns the filter template that was created for this control.
///
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Control FilterTemplate {
get {
return _filterUserControl;
}
}
protected override void Render(HtmlTextWriter writer) {
if (DesignMode) {
writer.Write("[" + GetType().Name + "]");
}
else {
base.Render(writer);
}
}
private void EnsureInit(IQueryableDataSource dataSource) {
if (_filterUserControl == null) {
MetaTable table = DynamicDataExtensions.GetMetaTable(dataSource, Context);
Column = table.GetColumn(DataField);
_filterUserControl = _filterLoader(Column, FilterUIHint);
_filterUserControl.Initialize(Column, dataSource, Context);
_filterUserControl.FilterChanged += new EventHandler(Child_FilterChanged);
Controls.Add(_filterUserControl);
}
}
private void Child_FilterChanged(object sender, EventArgs e) {
EventHandler eventHandler = FilterChanged;
if (eventHandler != null) {
eventHandler(sender, e);
}
}
internal void Initialize(IQueryableDataSource dataSource) {
Debug.Assert(dataSource != null);
EnsureInit(dataSource);
}
#region IFilterExpressionProvider Members
void IFilterExpressionProvider.Initialize(IQueryableDataSource dataSource) {
if (dataSource == null) {
throw new ArgumentNullException("dataSource");
}
_dataSource = dataSource;
Page.InitComplete += new EventHandler(Page_InitComplete);
}
void Page_InitComplete(object sender, EventArgs e) {
Debug.Assert(_dataSource != null);
EnsureInit(_dataSource);
}
IQueryable IFilterExpressionProvider.GetQueryable(IQueryable source) {
return _filterUserControl.GetQueryable(source);
}
#endregion
}
}
// 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
- CommandID.cs
- EntityCollectionChangedParams.cs
- BindingCompleteEventArgs.cs
- xml.cs
- FontEmbeddingManager.cs
- MatrixConverter.cs
- RightsManagementManager.cs
- tooltip.cs
- XXXInfos.cs
- WorkflowMarkupSerializationException.cs
- COM2EnumConverter.cs
- DefaultValueTypeConverter.cs
- TableLayout.cs
- Int32CollectionValueSerializer.cs
- TimeSpanStorage.cs
- URL.cs
- MaterialGroup.cs
- EventlogProvider.cs
- HttpModuleActionCollection.cs
- FormView.cs
- XamlSerializerUtil.cs
- ContactManager.cs
- OleDbCommand.cs
- TagMapInfo.cs
- ChildrenQuery.cs
- StackOverflowException.cs
- DescendantOverDescendantQuery.cs
- BufferModesCollection.cs
- XsltLoader.cs
- LinqDataSourceDeleteEventArgs.cs
- DataGridViewDataErrorEventArgs.cs
- ToolStripGripRenderEventArgs.cs
- NativeCompoundFileAPIs.cs
- SessionEndingEventArgs.cs
- WebPartDisplayModeCollection.cs
- GridPattern.cs
- TextBlock.cs
- TemplateBindingExtension.cs
- ModelVisual3D.cs
- XmlNamespaceMappingCollection.cs
- FigureParaClient.cs
- SplitterEvent.cs
- ContractAdapter.cs
- BitmapEditor.cs
- GenericXmlSecurityToken.cs
- RectangleGeometry.cs
- FullTextBreakpoint.cs
- Pair.cs
- OdbcConnectionPoolProviderInfo.cs
- XmlSerializableServices.cs
- ListViewItemEventArgs.cs
- SocketElement.cs
- arc.cs
- GridView.cs
- PropertyToken.cs
- IPCCacheManager.cs
- Gdiplus.cs
- ChildrenQuery.cs
- WebContext.cs
- DBPropSet.cs
- DuplicateDetector.cs
- documentsequencetextview.cs
- Predicate.cs
- ActivationWorker.cs
- NodeLabelEditEvent.cs
- TreeNodeBinding.cs
- PrintingPermissionAttribute.cs
- FontSourceCollection.cs
- TemplateKeyConverter.cs
- GPRECTF.cs
- ObjectHandle.cs
- XmlChildEnumerator.cs
- MatrixIndependentAnimationStorage.cs
- ScrollViewer.cs
- TimeSpanSecondsConverter.cs
- SqlDataSourceStatusEventArgs.cs
- TimerEventSubscriptionCollection.cs
- ProxyManager.cs
- CodePrimitiveExpression.cs
- LayoutSettings.cs
- EventLogEntryCollection.cs
- AnnotationComponentManager.cs
- ADMembershipProvider.cs
- QueryContinueDragEvent.cs
- TemplateBamlTreeBuilder.cs
- Math.cs
- Drawing.cs
- LogReservationCollection.cs
- SerializationSectionGroup.cs
- ClrProviderManifest.cs
- BrowserCapabilitiesFactoryBase.cs
- FileSystemInfo.cs
- SurrogateSelector.cs
- WinFormsSpinner.cs
- Content.cs
- DataGridItem.cs
- SocketException.cs
- WebScriptMetadataMessage.cs
- VirtualizedItemProviderWrapper.cs
- SqlDelegatedTransaction.cs