Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

ListControlDesigner Class

Serves as the base class for designers that provide design-time support in the Visual Web Designer for controls that are derived from the ListControl abstract class.

Namespace: System.Web.UI.Design.WebControls
Assembly: System.Design (in system.design.dll)

public class ListControlDesigner : DataBoundControlDesigner
public class ListControlDesigner extends DataBoundControlDesigner
public class ListControlDesigner extends DataBoundControlDesigner

In the Visual Web Designer, when the user switches from Source to Design view, the markup source code that describes a control derived from the ListControl class is parsed and a design-time version of the control is created on the design surface. When the user switches back to Source view, the design-time control is persisted to the markup source code and edited into the markup for the Web page. The ListControlDesigner class serves as the base class for designers that provide design-time support in the Visual Web Designer for controls that are derived from the ListControl.

The ListControlDesigner class properties provide the following functionality:

  • The ActionLists property returns a DesignerActionListCollection object, which typically contains an object that is derived from the DesignerActionList object for each level in the inheritance tree of the designer.

  • The DataTextField and DataValueField properties provide access to the corresponding properties of a control that is derived from the ListControl class. The DataTextField and DataValueField indicate the fields of the data source that provide the text and value content of the list items, respectively.

The ListControlDesigner class methods provide the following functionality:

  • The DataBind method binds the associated control that is derived from the ListControl to a design-time data source.

  • The GetDesignTimeHtml method returns the markup that is used to render the associated control at design time.

  • The GetSelectedDataSource method returns the design-time DataSource component from the associated control container.

  • The GetResolvedSelectedDataSource method returns the DataSource from the control container, resolved to the design-time DataMember property of the control.

  • The Initialize method prepares the designer to view and design the associated control that is derived from the ListControl.

  • The OnDataSourceChanged method is called when the DataSource for the associated control has changed.

  • The PreFilterProperties method is used to remove additional properties from, add additional properties to, or shadow properties of the associated control that is derived from the ListControl.

This section provides two code examples. The first demonstrates how to derive a custom control designer. The second demonstrates how to associate a derived control with a designer.

The following code example shows how to create a class named SimpleRadioButtonListDesigner that inherits from the ListControlDesigner class. The SimpleRadioButtonListDesigner class overrides the GetDesignTimeHtml, Initialize, and OnDataSourceChanged methods. The SimpleRadioButtonListDesigner class displays a SimpleRadioButtonList control on the design surface.

using System;
using System.ComponentModel;
using System.Drawing;
using System.Diagnostics;
using System.Web.UI.WebControls;
using System.Web.UI.Design.WebControls;

namespace Examples.CS.WebControls.Design
{
    // Create the SimpleRadioButtonListDesigner, which provides
    // design-time support for a custom list class.
    public class SimpleRadioButtonListDesigner : ListControlDesigner
    {
        SimpleRadioButtonList simpleRadioButtonList;
        bool changedDataSource;

        // Create the markup to display the control on the design surface. 
        public override string GetDesignTimeHtml()
        {
            string designTimeMarkup = null;

            // Create variables to access the control
            // item collection and back color.
            ListItemCollection items = simpleRadioButtonList.Items;
            Color oldBackColor = simpleRadioButtonList.BackColor;

            // Check the property values and render the markup
            // on the design surface accordingly.
            try
            {
                if (oldBackColor == Color.Empty)
                    simpleRadioButtonList.BackColor = Color.Gainsboro;

                if (changedDataSource)
                    items.Add("Updated to a new data source: " + 
                        DataSource + ".");

                // Call the base method to generate the markup.
                designTimeMarkup = base.GetDesignTimeHtml();
            }
            catch (Exception ex)
            {
                // Catch any exceptions that occur.
                designTimeMarkup = GetErrorDesignTimeHtml(ex);
            }
            finally
            {
                // Set the properties back to their original state.
                simpleRadioButtonList.BackColor = oldBackColor;
                items.Clear();
            }

            return designTimeMarkup;
        } // GetDesignTimeHtml

        public override void Initialize(IComponent component)
        {
            // Ensure that only a SimpleRadioButtonList can be 
            // created in this designer.
            Debug.Assert( 
                component is SimpleRadioButtonList, 
                "An invalid SimpleRadioButtonList control was initialized.");

            simpleRadioButtonList = (SimpleRadioButtonList)component;
            base.Initialize(component);
        } // Initialize

        // If the data source changes, set a boolean variable.
        public override void OnDataSourceChanged()
        {
            changedDataSource = true;
        } // OnDataSourceChanged
    } // SimpleRadioButtonListDesigner
} // Examples.CS.WebControls.Design

The following code example derives the SimpleRadioButtonList control from the RadioButtonList control, and shows how to use the DesignerAttribute class to associate the SimpleRadioButtonList control with its designer, the SimpleRadioButtonListDesigner class.

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Security.Permissions;

namespace Examples.CS.WebControls.Design
{
    // The SimpleRadioButtonList is a copy of the RadioButtonList.
    // It uses the SimpleRadioButtonListDesigner for design-time support.
    [AspNetHostingPermission(SecurityAction.Demand, 
        Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, 
        Level = AspNetHostingPermissionLevel.Minimal)]
    [Designer(typeof(Examples.CS.WebControls.Design.
       SimpleRadioButtonListDesigner))]
    [DataBindingHandler(typeof(Examples.CS.WebControls.Design.
        SimpleRadioButtonListDataBindingHandler))]
    public class SimpleRadioButtonList : RadioButtonList
    {
    } // SimpleRadioButtonList
} // Examples.CS.WebControls.Design

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0
Show:
© 2014 Microsoft. All rights reserved.