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
- CounterCreationDataConverter.cs
- GridViewDeleteEventArgs.cs
- IntPtr.cs
- BamlStream.cs
- TextDocumentView.cs
- ReflectionServiceProvider.cs
- TypeDelegator.cs
- Propagator.JoinPropagator.cs
- ActivityMarkupSerializer.cs
- JsonByteArrayDataContract.cs
- SamlNameIdentifierClaimResource.cs
- ProcessInfo.cs
- X509PeerCertificateAuthenticationElement.cs
- TargetControlTypeAttribute.cs
- TableCell.cs
- AdornerLayer.cs
- XPathMultyIterator.cs
- ToolStripItemClickedEventArgs.cs
- IconHelper.cs
- SafeThemeHandle.cs
- CTreeGenerator.cs
- WebPartConnectionsDisconnectVerb.cs
- IfJoinedCondition.cs
- BindingOperations.cs
- JapaneseCalendar.cs
- GridEntry.cs
- WindowPattern.cs
- SafeViewOfFileHandle.cs
- WindowsPrincipal.cs
- ProxyWebPartManagerDesigner.cs
- StrongNamePublicKeyBlob.cs
- SafeEventLogWriteHandle.cs
- XmlDataSourceView.cs
- ResXBuildProvider.cs
- SafeCertificateContext.cs
- SynchronizationContext.cs
- CodeAttributeArgumentCollection.cs
- ApplicationSettingsBase.cs
- Profiler.cs
- SharedUtils.cs
- Vector3DConverter.cs
- EventHandlerList.cs
- _FtpControlStream.cs
- RecognizerBase.cs
- SamlAuthenticationStatement.cs
- BrowsableAttribute.cs
- WindowsSysHeader.cs
- MemoryFailPoint.cs
- bindurihelper.cs
- CodeTypeDeclarationCollection.cs
- OutputScopeManager.cs
- ScriptResourceInfo.cs
- StagingAreaInputItem.cs
- ModelUIElement3D.cs
- XmlSchemaObject.cs
- xml.cs
- DetailsViewRow.cs
- Speller.cs
- FixedSOMImage.cs
- Zone.cs
- Stacktrace.cs
- PlanCompiler.cs
- RootContext.cs
- TraceHandlerErrorFormatter.cs
- FlagsAttribute.cs
- DetailsViewRow.cs
- ObjectStateFormatter.cs
- CodeGroup.cs
- MailSettingsSection.cs
- DecimalConstantAttribute.cs
- PolicyManager.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- MemberListBinding.cs
- OrderedDictionary.cs
- ServiceModelExtensionElement.cs
- PointLightBase.cs
- ComplusEndpointConfigContainer.cs
- AppliesToBehaviorDecisionTable.cs
- Perspective.cs
- TrackingValidationObjectDictionary.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- EditorResources.cs
- TileModeValidation.cs
- OpacityConverter.cs
- CodeIdentifiers.cs
- XmlArrayItemAttribute.cs
- SequentialActivityDesigner.cs
- EventListener.cs
- DataGridCaption.cs
- GuidConverter.cs
- InstalledFontCollection.cs
- ProxyRpc.cs
- PeerNameRecordCollection.cs
- ZipIOCentralDirectoryFileHeader.cs
- DirectionalLight.cs
- Animatable.cs
- List.cs
- CallId.cs
- InvalidFilterCriteriaException.cs
- InstanceView.cs