Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / WebControls / ListControlDesigner.cs / 1 / ListControlDesigner.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design.WebControls { using System; using System.Design; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System.IO; using System.Data; using System.Web.UI; using System.Web.UI.Design; using System.Web.UI.Design.Util; using System.Web.UI.WebControls; using System.Windows.Forms.Design; using DialogResult = System.Windows.Forms.DialogResult; using AttributeCollection = System.ComponentModel.AttributeCollection; using DataBinding = System.Web.UI.DataBinding; ////// /// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] [SupportsPreviewControl(true)] public class ListControlDesigner : DataBoundControlDesigner { ////// This is the base class for all ////// designers. /// /// /// public ListControlDesigner() { } ////// Initializes a new instance of ////// . /// /// /// Adds designer actions to the ActionLists collection. /// public override DesignerActionListCollection ActionLists { get { DesignerActionListCollection actionLists = new DesignerActionListCollection(); actionLists.AddRange(base.ActionLists); actionLists.Add(new ListControlActionList(this, DataSourceDesigner)); return actionLists; } } ////// /// public string DataValueField { get { return ((ListControl)Component).DataValueField; } set { ((ListControl)Component).DataValueField = value; } } ////// /// Retrieves the HTML to be used for the design time representation of the control runtime. /// public string DataTextField { get { return ((ListControl)Component).DataTextField; } set { ((ListControl)Component).DataTextField = value; } } ////// /// Used to determine whether the control should render its default action lists, /// containing a DataSourceID dropdown and related tasks. /// protected override bool UseDataSourcePickerActionList { get { return false; } } internal void ConnectToDataSourceAction() { InvokeTransactedChange(Component, new TransactedChangeCallback(ConnectToDataSourceCallback), null, SR.GetString(SR.ListControlDesigner_ConnectToDataSource)); } private bool ConnectToDataSourceCallback(object context) { ListControlConnectToDataSourceDialog dialog = new ListControlConnectToDataSourceDialog(this); DialogResult result = UIServiceHelper.ShowDialog(Component.Site, dialog); return (result == DialogResult.OK); } ////// /// DataBinds the given control to get design time rendering /// protected override void DataBind(BaseDataBoundControl dataBoundControl) { // We don't need to databind here because we just added items to the items collection return; } ////// Starts collection editor for List Items /// internal void EditItems() { PropertyDescriptor descriptor = TypeDescriptor.GetProperties(Component)["Items"]; Debug.Assert(descriptor != null, "Expected to find Items property on ListControl"); InvokeTransactedChange(Component, new TransactedChangeCallback(EditItemsCallback), descriptor, SR.GetString(SR.ListControlDesigner_EditItems), descriptor); } ////// Transacted callback to invoke the Edit Items dialog. /// private bool EditItemsCallback(object context) { IDesignerHost designerHost = (IDesignerHost)GetService(typeof(IDesignerHost)); Debug.Assert(designerHost != null); PropertyDescriptor descriptor = (PropertyDescriptor)context; ListItemsCollectionEditor editor = new ListItemsCollectionEditor(typeof(ListItemCollection)); editor.EditValue(new TypeDescriptorContext(designerHost, descriptor, Component), new WindowsFormsEditorServiceHelper(this), descriptor.GetValue(Component)); return true; } ////// /// public override string GetDesignTimeHtml() { try { ListControl listControl = (ListControl)ViewControl; ListItemCollection items = listControl.Items; bool isDataBound = IsDataBound(); if (items.Count == 0 || isDataBound) { if (isDataBound) { items.Clear(); items.Add(SR.GetString(SR.Sample_Databound_Text)); } else { items.Add(SR.GetString(SR.Sample_Unbound_Text)); } } return base.GetDesignTimeHtml(); } catch (Exception e) { return GetErrorDesignTimeHtml(e); } } ///Gets the HTML to be used for the design time representation of the control runtime. ////// public IEnumerable GetResolvedSelectedDataSource() { return ((IDataSourceProvider)this).GetResolvedSelectedDataSource(); } ////// public object GetSelectedDataSource() { return ((IDataSourceProvider)this).GetSelectedDataSource(); } ////// /// public override void Initialize(IComponent component) { VerifyInitializeArgument(component, typeof(ListControl)); base.Initialize(component); } ////// Initializes the component for design. /// ////// /// Return true if the control is databound. /// private bool IsDataBound() { DataBinding dataSourceBinding = DataBindings["DataSource"]; return (dataSourceBinding != null || DataSourceID.Length > 0); } ////// /// This method is called when the data source the control is /// connected to changes. Override this method to perform any /// additional actions that your designer requires. Make sure to call /// the base implementation as well. /// This method exists because it shipped in V1. Removing it creates a breaking change. /// Then call the base class' implementation. /// public virtual void OnDataSourceChanged() { // Call the base protected implementation to inherit the default behavior // of BaseDataBoundControlDesigner. base.OnDataSourceChanged(true); } ////// Called by data bound control designers to raise the data source /// changed event so that listeners can be notified. /// protected override void OnDataSourceChanged(bool forceUpdateView) { // Call the public OnDataSourceChanged method without parameters introduced in this class, // which exists for back-compat. This method is new in V2. // Derived classes overrode OnDataSourceChanged(), so make sure that gets called. this.OnDataSourceChanged(); } ////// /// protected override void PreFilterProperties(IDictionary properties) { base.PreFilterProperties(properties); PropertyDescriptor prop; Attribute[] fieldPropAttrs = new Attribute[] { new TypeConverterAttribute(typeof(DataFieldConverter)) }; prop = (PropertyDescriptor)properties["DataTextField"]; Debug.Assert(prop != null); prop = TypeDescriptor.CreateProperty(this.GetType(), prop, fieldPropAttrs); properties["DataTextField"] = prop; prop = (PropertyDescriptor)properties["DataValueField"]; Debug.Assert(prop != null); prop = TypeDescriptor.CreateProperty(this.GetType(), prop, fieldPropAttrs); properties["DataValueField"] = prop; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved./// Filters the properties to replace the runtime DataSource property /// descriptor with the designer's. /// ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UserControl.cs
- XmlLoader.cs
- GPPOINTF.cs
- BamlStream.cs
- XamlWrappingReader.cs
- SwitchCase.cs
- COSERVERINFO.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- ErrorRuntimeConfig.cs
- ApplicationException.cs
- MenuEventArgs.cs
- GridViewDeletedEventArgs.cs
- ToolStripContentPanelRenderEventArgs.cs
- Rule.cs
- XmlSchemaFacet.cs
- FastEncoderWindow.cs
- PropertyCollection.cs
- CodePropertyReferenceExpression.cs
- InvokeProviderWrapper.cs
- Constraint.cs
- Point3D.cs
- PropertySegmentSerializationProvider.cs
- PixelFormat.cs
- Buffer.cs
- RawStylusInputCustomDataList.cs
- AnnotationHelper.cs
- UniformGrid.cs
- JsonQueryStringConverter.cs
- JavaScriptString.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- XmlSchemaAny.cs
- Funcletizer.cs
- XmlLangPropertyAttribute.cs
- SharedStatics.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- BamlBinaryReader.cs
- CacheDependency.cs
- ApplicationBuildProvider.cs
- MLangCodePageEncoding.cs
- XmlSchemaNotation.cs
- CacheMemory.cs
- HtmlInputCheckBox.cs
- InputLanguageManager.cs
- GeneralTransform3DTo2D.cs
- Hash.cs
- ActivityPreviewDesigner.cs
- COM2ICategorizePropertiesHandler.cs
- PathTooLongException.cs
- ResizeBehavior.cs
- BulletedList.cs
- CharEntityEncoderFallback.cs
- CroppedBitmap.cs
- TreeNodeStyle.cs
- Quaternion.cs
- WinEventTracker.cs
- TextSearch.cs
- OutputCacheEntry.cs
- XmlElement.cs
- BasicHttpMessageCredentialType.cs
- DataGridDetailsPresenterAutomationPeer.cs
- PersonalizablePropertyEntry.cs
- VariantWrapper.cs
- CorrelationTokenInvalidatedHandler.cs
- VSWCFServiceContractGenerator.cs
- SAPICategories.cs
- TimeManager.cs
- ValidateNames.cs
- TransformerInfo.cs
- GridViewColumnHeaderAutomationPeer.cs
- TripleDESCryptoServiceProvider.cs
- COAUTHIDENTITY.cs
- PerformanceCounterPermission.cs
- AttributeData.cs
- SingleSelectRootGridEntry.cs
- WindowsTab.cs
- DataGridColumnCollection.cs
- FormsAuthenticationTicket.cs
- WebPartDeleteVerb.cs
- Cursors.cs
- StandardCommandToolStripMenuItem.cs
- ContainerFilterService.cs
- ConnectionStringsExpressionBuilder.cs
- FormatPage.cs
- TableRowCollection.cs
- InstanceLockTracking.cs
- TypefaceMap.cs
- SoapFault.cs
- SolidColorBrush.cs
- NetTcpSection.cs
- RoleBoolean.cs
- NativeMethods.cs
- InvalidAsynchronousStateException.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- TableParagraph.cs
- CompilerGlobalScopeAttribute.cs
- SQLConvert.cs
- SoapWriter.cs
- EventItfInfo.cs
- OrthographicCamera.cs
- OracleEncoding.cs