GridViewDesigner (Clase)
Actualización: noviembre 2007
Proporciona compatibilidad en tiempo de diseño en un diseñador visual para el control GridView.
Ensamblado: System.Design (en System.Design.dll)
En un diseñador visual, al cambiar de la vista Código fuente a la vista Diseño, se analiza el código fuente de marcado que describe el control GridView y se crea una versión en tiempo de diseño del control en la superficie de diseño. Cuando se vuelve a cambiar a la vista Código fuente, el control en tiempo de diseño se guarda en el código fuente de marcado y se edita en el marcado de la página Web.
Las propiedades de la clase GridViewDesigner proporciona la siguiente funcionalidad:
La propiedad ActionLists devuelve un objeto DesignerActionListCollection, que normalmente contiene un objeto que se deriva de la clase DesignerActionList, por cada uno de los niveles del árbol de herencia del diseñador.
La propiedad AutoFormats devuelve una colección de esquemas de aplicación de formato que se mostrará en el cuadro de diálogo Formato automático.
La propiedad TemplateGroups devuelve una colección de grupos de plantillas para los campos del control GridView asociado y las plantillas GridView de nivel superior.
La propiedad UsePreviewControl devuelve siempre true, lo que indica que el diseñador crea una copia temporal del objeto GridView asociado para generar el marcado en tiempo de diseño.
Los métodos de la clase GridViewDesigner proporcionan las siguientes funciones:
El método DataBind enlaza el control GridView asociado a un origen de datos en tiempo de diseño.
El método GetDesignTimeHtml devuelve el marcado que se utiliza para representar el control GridView asociado en tiempo de diseño.
El método Initialize prepara el diseñador para poder ver, modificar y diseñar el objeto GridView asociado.
Se llama al método OnClick cuando se hace clic en una región de la vista en tiempo de diseño del objeto GridView asociado.
Se llama al método OnSchemaRefreshed cada vez que cambia el esquema del origen de datos del objeto GridView asociado.
El método PreFilterProperties se utiliza para quitar o agregar propiedades, o para crear copias sombra de las propiedades del objeto GridView asociado.
El control GridView no admite áreas modificables en tiempo de diseño, por lo que los métodos GetEditableDesignerRegionContent y SetEditableDesignerRegionContent no tienen ninguna funcionalidad.
En el siguiente ejemplo de código se muestra la forma de extender la clase GridViewDesigner para cambiar el aspecto de los controles que se derivan del control GridView en tiempo de diseño.
En el ejemplo, el control MyGridView se deriva de GridView. El control MyGridView no es más que una copia del objeto GridView. En el ejemplo se deriva también la clase MyGridViewDesigner de la clase GridViewDesigner y se coloca un objeto DesignerAttribute para MyGridViewDesigner en el control MyGridView.
MyGridViewDesigner reemplaza el método PreFilterProperties para hacer visible la propiedad Page en la cuadrícula Propiedades en tiempo de diseño. Reemplaza el método GetDesignTimeHtml para incluir la propiedad Caption, si se especifica, como nueva primera fila en el control MyGridView en tiempo de diseño. Si la propiedad BorderStyle del control MyGridView tiene el valor NotSet o None, GetDesignTimeHtml dibuja un borde discontinuo de color azul alrededor del control para hacerlo más visible.
using System; using System.Web; using System.Drawing; using System.Web.UI.WebControls; using System.Web.UI.Design.WebControls; using System.Collections; using System.ComponentModel; using System.Security.Permissions; namespace Examples.CS.WebControls.Design { // The MyGridView is a copy of the GridView. [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] [Designer(typeof(Examples.CS.WebControls.Design.MyGridViewDesigner))] public class MyGridView : GridView { } // MyGridView // Override members of the GridViewDesigner. [ReflectionPermission(SecurityAction.Demand, Flags=ReflectionPermissionFlag.MemberAccess)] public class MyGridViewDesigner : GridViewDesigner { // Shadow the control properties with design-time properties. protected override void PreFilterProperties(IDictionary properties) { // Call the base method first. base.PreFilterProperties(properties); // Make the Page visible in the Properties grid. PropertyDescriptor selectProp = (PropertyDescriptor)properties["Page"]; properties["Page"] = TypeDescriptor.CreateProperty(selectProp.ComponentType, selectProp, BrowsableAttribute.Yes); } // PreFilterProperties // Generate the design-time markup. const string capTag = "caption"; const string trOpen = "tr><td colspan=9 align=center"; const string trClose = "td></tr"; public override string GetDesignTimeHtml() { // Make the full extent of the control more visible in the designer. // If the border style is None or NotSet, change the border to // a wide, blue, dashed line. Include the caption within the border. MyGridView myGV = (MyGridView)Component; string markup = null; int charX; // Check if the border style should be changed. if (myGV.BorderStyle == BorderStyle.NotSet || myGV.BorderStyle == BorderStyle.None) { BorderStyle oldBorderStyle = myGV.BorderStyle; Unit oldBorderWidth = myGV.BorderWidth; Color oldBorderColor = myGV.BorderColor; // Set the design-time properties and catch any exceptions. try { myGV.BorderStyle = BorderStyle.Dashed; myGV.BorderWidth = Unit.Pixel(3); myGV.BorderColor = Color.Blue; // Call the base method to generate the markup. markup = base.GetDesignTimeHtml(); } catch (Exception ex) { markup = GetErrorDesignTimeHtml(ex); } finally { // Restore the properties to their original settings. myGV.BorderStyle = oldBorderStyle; myGV.BorderWidth = oldBorderWidth; myGV.BorderColor = oldBorderColor; } } else // Call the base method to generate the markup. markup = base.GetDesignTimeHtml(); // Look for a <caption> tag. if ((charX = markup.IndexOf(capTag)) > 0) { // Replace the first caption with // "tr><td colspan=9 align=center". // It is okay if the colspan exceeds the // number of columns in the table. markup = markup.Remove(charX, capTag.Length).Insert(charX, trOpen); // Replace the second caption with "td></tr". if ((charX = markup.IndexOf(capTag, charX)) > 0) markup = markup.Remove(charX, capTag.Length).Insert(charX, trClose); } return markup; } // GetDesignTimeHtml } // MyGridViewDesigner } // Examples.CS.WebControls.Design
System.ComponentModel.Design.ComponentDesigner
System.Web.UI.Design.HtmlControlDesigner
System.Web.UI.Design.ControlDesigner
System.Web.UI.Design.WebControls.BaseDataBoundControlDesigner
System.Web.UI.Design.WebControls.DataBoundControlDesigner
System.Web.UI.Design.WebControls.GridViewDesigner
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.