UpdatePanel (Clase)
Habilita secciones de una página para que se presenten parcialmente sin postback.
Ensamblado: System.Web.Extensions (en System.Web.Extensions.dll)
El tipo UpdatePanel expone los siguientes miembros.
| Nombre | Descripción | |
|---|---|---|
|
Adapter | Obtiene el adaptador específico del explorador para el control. (Se hereda de Control). |
|
AppRelativeTemplateSourceDirectory | Obtiene o establece el directorio virtual relativo a la aplicación del objeto Page o el objeto UserControl que contiene este control. (Se hereda de Control). |
|
Attributes | Obtiene la colección de atributos de hoja de estilos en cascada (CSS) del control UpdatePanel. |
|
BindingContainer | Infraestructura. Obtiene el control que contiene el enlace de datos de este control. (Se hereda de Control). |
|
ChildControlsCreated | Obtiene un valor que indica si se han creado controles secundarios del control de servidor. (Se hereda de Control). |
|
ChildrenAsTriggers | Obtiene o establece un valor que indica si las devoluciones de datos de los controles secundarios inmediatos de un control UpdatePanel actualizan el contenido del panel. |
|
ClientID | Obtiene el identificador de control del formato HTML generado por ASP.NET. (Se hereda de Control). |
|
ClientIDMode | Obtiene o establece el algoritmo que se utiliza para generar el valor de la propiedad ClientID. (Se hereda de Control). |
|
ClientIDSeparator | Obtiene un valor de carácter que representa el carácter separado utilizado en la propiedad ClientID. (Se hereda de Control). |
|
ContentTemplate | Obtiene o establece la plantilla que define el contenido del control UpdatePanel. |
|
ContentTemplateContainer | Obtiene un objeto de control al que puede agregar controles secundarios mediante programación. |
|
Context | Obtiene el objeto HttpContext asociado al control de servidor para la solicitud Web actual. (Se hereda de Control). |
|
Controls | Obtiene el objeto ControlCollection que contiene los controles secundarios del control UpdatePanel. (Invalida a Control.Controls). |
|
DataItemContainer | Obtiene una referencia al contenedor de nomenclatura si este implementa IDataItemContainer. (Se hereda de Control). |
|
DataKeysContainer | Obtiene una referencia al contenedor de nomenclatura si este implementa IDataKeysControl. (Se hereda de Control). |
|
DesignMode | Obtiene un valor que indica si se está utilizando un control en una superficie de diseño. (Se hereda de Control). |
|
EnableTheming | Obtiene o establece un valor que indica si los temas se aplican a este control. (Se hereda de Control). |
|
EnableViewState | Obtiene o establece un valor que indica si el control de servidor debe mantener su estado de vista y el de los controles secundarios que contiene, en el cliente que realiza la solicitud. (Se hereda de Control). |
|
Events | Obtiene una lista de delegados de controladores de eventos del control. Esta propiedad es de sólo lectura. (Se hereda de Control). |
|
HasChildViewState | Obtiene un valor que indica si los controles secundarios del control de servidor actual tienen guardada alguna configuración del estado de vista. (Se hereda de Control). |
|
ID | Obtiene o establece el identificador de programación asignado al control de servidor. (Se hereda de Control). |
|
IdSeparator | Infraestructura. Obtiene el carácter utilizado para separar los identificadores de control. (Se hereda de Control). |
|
IsChildControlStateCleared | Obtiene un valor que indica si los controles que se encuentran en este control tienen estado de control. (Se hereda de Control). |
|
IsInPartialRendering | Obtiene un valor que indica si se actualiza el control UpdatePanel como resultado de una devolución de datos asincrónica. |
|
IsTrackingViewState | Obtiene un valor que indica si el control de servidor está guardando los cambios realizados en su estado de vista. (Se hereda de Control). |
|
IsViewStateEnabled | Obtiene un valor que indica si el estado de vista está habilitado para este control. (Se hereda de Control). |
|
LoadViewStateByID | Obtiene un valor que indica si el control participa en la carga de su estado de vista mediante ID en lugar de índice. (Se hereda de Control). |
|
NamingContainer | Obtiene una referencia al contenedor de nomenclatura del control de servidor, que crea un espacio de nombres único para diferenciar los distintos controles de servidor que tienen el mismo valor para la propiedad Control.ID. (Se hereda de Control). |
|
Page | Obtiene una referencia a la instancia Page que contiene el control de servidor. (Se hereda de Control). |
|
Parent | Obtiene una referencia al control principal del control de servidor en la jerarquía de controles de página. (Se hereda de Control). |
|
RenderingCompatibility | Obtiene o establece un valor que especifica la versión de ASP.NET compatible con los elementos HTML representados. (Se hereda de Control). |
|
RenderMode | Obtiene o establece un valor que indica si el contenido de un control UpdatePanel se incluye en un <div> HTML o en un elemento de <span>. |
|
RequiresUpdate | Obtiene un valor que indica si se va a actualizar el contenido del control UpdatePanel. |
|
Site | Obtiene información sobre el contenedor en que se encuentra el control actual cuando se representa en una superficie de diseño. (Se hereda de Control). |
|
SkinID | Obtiene o establece la máscara que se va a aplicar al control. (Se hereda de Control). |
|
TemplateControl | Obtiene o establece una referencia a la plantilla que contiene este control. (Se hereda de Control). |
|
TemplateSourceDirectory | Obtiene el directorio virtual de Page o UserControl que contiene el control de servidor actual. (Se hereda de Control). |
|
Triggers | Obtiene un objeto UpdatePanelTriggerCollection que contiene los objetos AsyncPostBackTrigger y PostBackTrigger que se registraron mediante declaración para el control UpdatePanel. |
|
UniqueID | Obtiene el identificador único calificado jerárquicamente para el control de servidor. (Se hereda de Control). |
|
UpdateMode | Obtiene o establece un valor que indica cuándo se actualiza un control de contenido UpdatePanel. |
|
ViewState | Obtiene un diccionario con información de estado que le permite guardar y restaurar el estado de vista de un control de servidor en las distintas solicitudes de la misma página. (Se hereda de Control). |
|
ViewStateIgnoresCase | Obtiene un valor que indica si el objeto StateBag no distingue mayúsculas de minúsculas. (Se hereda de Control). |
|
ViewStateMode | Obtiene o establece el modo del estado de vista de este control. (Se hereda de Control). |
|
Visible | Obtiene o establece un valor que indica si un control de servidor se debe representar como interfaz de usuario en la página. (Se hereda de Control). |
| Nombre | Descripción | |
|---|---|---|
|
AddedControl | Se le llama una vez que se ha agregado un control secundario a la colección Controls del Control objeto. (Se hereda de Control). |
|
AddParsedSubObject | Indica al control de servidor que se ha analizado un elemento, ya sea XML o HTML, y agrega dicho elemento al objeto ControlCollection del control de servidor. (Se hereda de Control). |
|
ApplyStyleSheetSkin | Aplica al control las propiedades de estilo definidas en la hoja de estilos de la página. (Se hereda de Control). |
|
BuildProfileTree | Infraestructura. Recopila información sobre el control de servidor y la pasa a la propiedad Trace para que se muestre cuando está habilitada la traza de la página. (Se hereda de Control). |
|
ClearCachedClientID | Infraestructura. Establece en null el valor de ClientID almacenado en caché. (Se hereda de Control). |
|
ClearChildControlState | Elimina la información sobre el estado de control de los controles secundarios del control de servidor. (Se hereda de Control). |
|
ClearChildState | Elimina la información sobre el estado de vista y el estado de control de los controles secundarios del control de servidor. (Se hereda de Control). |
|
ClearChildViewState | Elimina la información sobre el estado de vista de todos los controles secundarios del control de servidor. (Se hereda de Control). |
|
ClearEffectiveClientIDMode | Infraestructura. Establece la propiedad ClientIDMode de la instancia del control actual y de cualquier control secundario en Inherit. (Se hereda de Control). |
|
CreateChildControls | Lo llama el marco de trabajo de las páginas ASP.NET para indicar a los controles de servidor que utilizan la implementación basada en la composición que creen los controles secundarios que contengan como forma de preparar la devolución o representación de los datos. (Se hereda de Control). |
|
CreateContentTemplateContainer | Crea un objeto Control que actúa como contenedor de los controles secundarios que definen el contenido del control UpdatePanel. |
|
CreateControlCollection | Devuelve la colección de todos los controles contenidos en el control UpdatePanel. (Invalida a Control.CreateControlCollection()). |
|
DataBind() | Enlaza un origen de datos al control de servidor invocado y a todos sus controles secundarios. (Se hereda de Control). |
|
DataBind(Boolean) | Enlaza un origen de datos al control de servidor que se ha invocado y a todos sus controles secundarios con una opción para generar el evento DataBinding. (Se hereda de Control). |
|
DataBindChildren | Enlaza un origen de datos a los controles secundarios del control de servidor. (Se hereda de Control). |
|
Dispose | Habilita un control de servidor para que realice la limpieza final antes de que se libere de la memoria. (Se hereda de Control). |
|
EnsureChildControls | Determina si el control de servidor contiene controles secundarios. Si no tiene controles secundarios, los crea. (Se hereda de Control). |
|
EnsureID | Crea un identificador para controles que no tiene un identificador asignado. (Se hereda de Control). |
|
Equals(Object) | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). |
|
Finalize | Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object). |
|
FindControl(String) | Busca un control de servidor con el parámetro id especificado en el contenedor de nomenclatura actual. (Se hereda de Control). |
|
FindControl(String, Int32) | Infraestructura. Busca el contenedor de nomenclatura actual para un control de servidor con el id especificado y un entero, que se especifica en el parámetro pathOffset, que ayuda a realizar la búsqueda. Esta versión del método FindControl no se debe reemplazar. (Se hereda de Control). |
|
Focus | Establece el foco de entrada en un control. (Se hereda de Control). |
|
GetDesignModeState | Infraestructura. Obtiene datos en tiempo de diseño para un control. (Se hereda de Control). |
|
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). |
|
GetRouteUrl(Object) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta. (Se hereda de Control). |
|
GetRouteUrl(RouteValueDictionary) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta. (Se hereda de Control). |
|
GetRouteUrl(String, Object) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta y un nombre de ruta. (Se hereda de Control). |
|
GetRouteUrl(String, RouteValueDictionary) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta y un nombre de ruta. (Se hereda de Control). |
|
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). |
|
GetUniqueIDRelativeTo | Devuelve la parte correspondiente al prefijo de la propiedad UniqueID del control especificado. (Se hereda de Control). |
|
HasControls | Determina si el control de servidor contiene controles secundarios. (Se hereda de Control). |
|
HasEvents | Devuelve un valor que indica si se registran eventos para el control o los controles secundarios. (Se hereda de Control). |
|
Initialize | Inicializa la colección de desencadenadores del control UpdatePanel si se habilita la representación de página parcial. |
|
IsLiteralContent | Infraestructura. Determina si el control de servidor alberga únicamente contenido literal. (Se hereda de Control). |
|
LoadControlState | Restaura información de estado de control de una solicitud de página anterior guardada por el método SaveControlState. (Se hereda de Control). |
|
LoadViewState | Restaura la información sobre el estado de vista de una solicitud de página anterior guardada por el método SaveViewState. (Se hereda de Control). |
|
MapPathSecure | Recupera la ruta de acceso física a la que se asigna una ruta de acceso virtual, absoluta o relativa. (Se hereda de Control). |
|
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). |
|
OnBubbleEvent | Determina si el evento del control de servidor debe pasarse a la jerarquía de controles de servidor de la interfaz de usuario de la página. (Se hereda de Control). |
|
OnDataBinding | Provoca el evento DataBinding. (Se hereda de Control). |
|
OnInit | Provoca el evento Init. (Invalida a Control.OnInit(EventArgs)). |
|
OnLoad | Genera el evento Load del control UpdatePanel e invoca el método Initialize cuando no se habilita la representación de página parcial. (Invalida a Control.OnLoad(EventArgs)). |
|
OnPreRender | Provoca el evento PreRender. (Invalida a Control.OnPreRender(EventArgs)). |
|
OnUnload | Genera el evento Unload base. (Invalida a Control.OnUnload(EventArgs)). |
|
OpenFile | Obtiene un objeto Stream utilizado para leer un archivo. (Se hereda de Control). |
|
RaiseBubbleEvent | Asigna los orígenes del evento y su información al control principal del control. (Se hereda de Control). |
|
RemovedControl | Se le llama una vez que se ha quitado un control secundario de la colección Controls del Control objeto. (Se hereda de Control). |
|
Render | Genera el evento Render. (Invalida a Control.Render(HtmlTextWriter)). |
|
RenderChildren | Genera el evento RenderChildren. (Invalida a Control.RenderChildren(HtmlTextWriter)). |
|
RenderControl(HtmlTextWriter) | Envía el contenido del control de servidor a un objeto HtmlTextWriter que se proporciona y almacena la información de traza sobre el control si dicha traza está habilitada. (Se hereda de Control). |
|
RenderControl(HtmlTextWriter, ControlAdapter) | Coloca el contenido de un control de servidor en un objeto HtmlTextWriter proporcionado, utilizando un objeto ControlAdapter proporcionado. (Se hereda de Control). |
|
ResolveAdapter | Obtiene el adaptador de controles que se encarga de representar el control especificado. (Se hereda de Control). |
|
ResolveClientUrl | Obtiene una dirección URL que el explorador puede utilizar. (Se hereda de Control). |
|
ResolveUrl | Convierte una dirección URL en una que el cliente solicitante pueda utilizar. (Se hereda de Control). |
|
SaveControlState | Guarda los cambios de estado de un control de servidor que se hayan producido desde el momento en que se devolvieron al servidor los datos de la página. (Se hereda de Control). |
|
SaveViewState | Guarda los cambios realizados en el estado de vista del control de servidor desde la devolución de la página al servidor. (Se hereda de Control). |
|
SetDesignModeState | Establece datos en tiempo de diseño para un control. (Se hereda de Control). |
|
SetRenderMethodDelegate | Infraestructura. Asigna un delegado de controlador de eventos para representar el control de servidor y su contenido en el control principal. (Se hereda de Control). |
|
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). |
|
TrackViewState | Origina el seguimiento de los cambios del estado de vista del control de servidor de manera que se puedan almacenar en el objeto StateBag del control de servidor. Se obtiene acceso a este objeto a través de la propiedad Control.ViewState. (Se hereda de Control). |
|
Update | Genera una actualización del contenido de un control UpdatePanel. |
| Nombre | Descripción | |
|---|---|---|
|
DataBinding | Se produce cuando el control de servidor se enlaza a un origen de datos. (Se hereda de Control). |
|
Disposed | Se produce cuando un control de servidor se libera de la memoria, lo que constituye la última fase del período de duración de un control de servidor cuando se solicita una página ASP.NET. (Se hereda de Control). |
|
Init | Tiene lugar al inicializar el control de servidor, que es el primer paso en su ciclo de vida. (Se hereda de Control). |
|
Load | Se produce cuando el control de servidor se carga en el objeto Page. (Se hereda de Control). |
|
PreRender | Se produce una vez que se carga el objeto Control, pero antes de su representación. (Se hereda de Control). |
|
Unload | Se produce cuando el control de servidor se descarga de la memoria. (Se hereda de Control). |
| Nombre | Descripción | |
|---|---|---|
|
FindDataSourceControl | Devuelve el origen de datos que está asociado al control de datos del control especificado. (Definido por DynamicDataExtensions). |
|
FindFieldTemplate | Devuelve la plantilla de campo para la columna especificada en el contenedor de nomenclatura del control especificado. (Definido por DynamicDataExtensions). |
|
FindMetaTable | Devuelve el objeto de metatabla para el control de datos contenedor. (Definido por DynamicDataExtensions). |
En este tema:
Introduction
Los controles UpdatePanel son una parte fundamental de la funcionalidad AJAX en ASP.NET. Se usan con el control ScriptManager para habilitar la representación de una página parcial. Esta representación reduce la necesidad de devoluciones de datos sincrónicas y actualizaciones de página completas cuando sólo se debe actualizar parte de la página. La representación de página parcial mejora la experiencia del usuario porque reduce el parpadeo de la pantalla que se produce durante una devolución de datos de página completa y mejora la interactividad de páginas web.
Actualizar el contenido de UpdatePanel
Cuando se habilita la representación parcial de la página, un control puede realizar una devolución de datos que actualiza la página entera o una devolución de datos asincrónica que actualiza el contenido de uno o más controles UpdatePanel. Si un control genera una devolución de datos asincrónica y actualiza un control UpdatePanel depende de lo siguiente:
-
Si la propiedad UpdateMode del control UpdatePanel se establece en Always, el contenido del control UpdatePanel se actualiza en cada devolución de datos que se origine en la página. Se incluyen las devoluciones de datos asincrónicas de controles que están dentro de otros controles UpdatePanel y devoluciones de datos de controles que no están dentro de los controles UpdatePanel.
-
Si la propiedad UpdateMode se establece en Conditional, el contenido del control UpdatePanel se actualiza en los siguientes casos:
-
Al llamar explícitamente al método Update del control UpdatePanel.
-
Cuando se anida el control UpdatePanel dentro de otro control UpdatePanel y se actualiza el panel primario.
-
Cuando un control que se define como desencadenador utilizando la propiedad Triggers del control UpdatePanel genera una devolución de datos. En este escenario, el control activa explícitamente una actualización del contenido del panel. El control puede ser interior o exterior respecto al control UpdatePanel al que se asocia el desencadenador.
-
Cuando la propiedad ChildrenAsTriggers se establece en true y un control secundario del control UpdatePanel provoca una devolución de datos. Los controles secundarios de los controles UpdatePanel anidados no provocan actualizaciones del control UpdatePanel externo a menos que se definan explícitamente como desencadenadores.
-
No se permite la combinación de establecer la propiedad ChildrenAsTriggers en false y la propiedad UpdateMode en Always y produce una excepción.
Cuando el control UpdatePanel realiza un envío asincrónico, agrega un encabezado HTTP personalizado. Algunos proxies quitan este encabezado HTTP personalizado. Si es así, el servidor controla la solicitud como una devolución de datos normal, lo que genera un error en el cliente. Para resolver este problema, inserte un campo de formulario personalizado cuando realice envíos asincrónicos. A continuación, compruebe el encabezado o el campo de formulario personalizado en el código de servidor.
Uso de UpdatePanel
Puede utilizar varios controles UpdatePanel para actualizar las diferentes regiones de una página independientemente. Cuando primero se representa la página que contiene uno o más controles UpdatePanel, se representa y se envía todo el contenido de todos los controles UpdatePanel al explorador. En las devoluciones de datos asincrónica subsiguientes, el contenido de cada control UpdatePanel quizá no se pueda actualizar dependiendo de la configuración del panel y de la lógica de cliente o de servidor de los paneles individuales.
También puede utilizar los controles UpdatePanel en los escenarios siguientes:
-
En controles de usuario.
-
En las páginas maestras y de contenido.
-
Anidados en otros controles UpdatePanel.
-
Dentro de controles con plantilla como los controles GridView o Repeater.
Se pueden agregar los controles UpdatePanel mediante declaración o programación.
Puede agregar un control UpdatePanel mediante programación, pero no puede agregar desencadenadores de esta forma. Para crear comportamiento como desencadenador, puede registrar un control en la página como control de devolución de datos asincrónica. Para hacer esto llame al método RegisterAsyncPostBackControl del control ScriptManager. Después puede crear un controlador de eventos que se ejecute como respuesta a la devolución de datos asincrónica y, en el controlador, llame al método Update del control UpdatePanel.
Aplicar estilos
El control UpdatePanel acepta atributos expando. Esto le permite establecer una clase CSS para los elementosHTML que los controles representan. Por ejemplo, podría crear el marcado que se muestra en el ejemplo siguiente:
<asp:UpdatePanel runat="server" class="myStyle"> </asp:UpdatePanel>
El marcado en el ejemplo anterior representa HTML similar al siguiente cuando la página se ejecuta:
<div id="ctl00_MainContent_UpdatePanel1" class="MyStyle"> </div>
Sintaxis de la declaración
<asp:UpdatePanel ChildrenAsTriggers="True|False" EnableTheming="True|False" EnableViewState="True|False" ID="string" OnDataBinding="DataBinding event handler" OnDisposed="Disposed event handler" OnInit="Init event handler" OnLoad="Load event handler" OnPreRender="PreRender event handler" OnUnload="Unload event handler" RenderMode="Block|Inline" runat="server" SkinID="string" UpdateMode="Always|Conditional" Visible="True|False" > <ContentTemplate> <!-- child controls --> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="string" EventName="string" /> <asp:PostBackTrigger ControlID="string" /> </Triggers> </asp:UpdatePanel>
En los ejemplos siguientes, se muestran distintos usos del control UpdatePanel.
Controles dentro de un control UpdatePanel
En el ejemplo siguiente, se muestra la colocación de los controles dentro de un control UpdatePanel para reducir el parpadeo de la pantalla al exponer en el servidor. En este ejemplo, los controles Calendar y DropDownList están dentro de un control UpdatePanel. De forma predeterminada, el valor de la propiedad UpdateMode es Always y el de la propiedad ChildrenAsTriggers es true. Por consiguiente, los controles secundarios del panel provocan una devolución de datos asincrónica.
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> void DropDownSelection_Change(Object sender, EventArgs e) { Calendar1.DayStyle.BackColor = System.Drawing.Color.FromName(ColorList.SelectedItem.Value); } protected void Calendar1_SelectionChanged(object sender, EventArgs e) { SelectedDate.Text = Calendar1.SelectedDate.ToString(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>UpdatePanel Example</title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Calendar ID="Calendar1" ShowTitle="True" OnSelectionChanged="Calendar1_SelectionChanged" runat="server" /> <div> Background: <br /> <asp:DropDownList ID="ColorList" AutoPostBack="True" OnSelectedIndexChanged="DropDownSelection_Change" runat="server"> <asp:ListItem Selected="True" Value="White"> White </asp:ListItem> <asp:ListItem Value="Silver"> Silver </asp:ListItem> <asp:ListItem Value="DarkGray"> Dark Gray </asp:ListItem> <asp:ListItem Value="Khaki"> Khaki </asp:ListItem> <asp:ListItem Value="DarkKhaki"> D ark Khaki </asp:ListItem> </asp:DropDownList> </div> <br /> Selected date: <asp:Label ID="SelectedDate" runat="server">None.</asp:Label> </ContentTemplate> </asp:UpdatePanel> <br /> </div> </form> </body> </html>
Escenario de maestro/detalle con controles UpdatePanel
En el ejemplo siguiente, se usa un control UpdatePanel en un escenario de maestro/detalle que muestra los pedidos y los detalles de los pedidos de la base de datos Northwind. Un control UpdatePanel contiene el control GridView que muestra una lista de pedidos. Un segundo control UpdatePanel contiene un control DetailsView que muestra los detalles de un pedido. Al seleccionar un pedido de la primera tabla, los detalles para ese pedido se muestran en la segunda tabla. Esta tabla se actualiza de forma asincrónica basándose en la selección en la primera. Las operaciones de paginación y ordenación de la tabla de resumen de pedidos también provocan actualizaciones parciales.
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { SqlDataSource2.SelectParameters["OrderID"].DefaultValue = GridView1.SelectedDataKey.Value.ToString(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>UpdatePanel Example</title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:UpdatePanel ID="OrdersPanel" UpdateMode="Conditional" runat="server"> <ContentTemplate> <asp:GridView ID="GridView1" AllowPaging="True" AllowSorting="True" Caption="Orders" DataKeyNames="OrderID" DataSourceID="SqlDataSource1" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" runat="server" > <Columns> <asp:CommandField ShowSelectButton="True"></asp:CommandField> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [OrderID], [CustomerID], [EmployeeID], [OrderDate] FROM [Orders]"> </asp:SqlDataSource> </ContentTemplate> </asp:UpdatePanel> <asp:UpdatePanel ID="OrderDetailsPanel" UpdateMode="Always" runat="server"> <ContentTemplate> <asp:DetailsView ID="DetailsView1" Caption="Order Details" DataKeyNames="OrderID,ProductID" DataSourceID="SqlDataSource2" runat="server"> <EmptyDataTemplate> <i>Select a row from the Orders table.</i> </EmptyDataTemplate> </asp:DetailsView> <asp:SqlDataSource ID="SqlDataSource2" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [OrderID], [ProductID], [UnitPrice], [Quantity], [Discount] FROM [Order Details] WHERE ([OrderID] = @OrderID)" runat="server"> <SelectParameters> <asp:Parameter Name="OrderID" Type="Int32" /> </SelectParameters> </asp:SqlDataSource> </ContentTemplate> </asp:UpdatePanel> </div> </form> </body> </html>
Si coloca un control GridView dentro de un control UpdatePanel, no se admite el establecimiento del valor de la propiedad EnableSortingAndPagingCallbacks del control GridView en true. Sin embargo, puesto que el control UpdatePanel admite las devoluciones de datos asincrónicas, cualquier devolución de datos que cambie el control GridView dentro de un control UpdatePanel provocan el mismo comportamiento que las devoluciones de llamadas de ordenación y paginación.
Usar un control UpdatePanel en una plantilla
En el ejemplo siguiente se usa un control UpdatePanel en la plantilla de elemento de un control GridView. Automáticamente se generan los controles UpdatePanel en cada fila de datos. El control UpdatePanel de cada fila contiene un control Label con el fin de mostrar la parte del elemento de esa fila y un control Button para reducir y aumentar esa parte.
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> private void ChangeQuantity(object sender, int delta) { Label quantityLabel = (Label)((Button)sender).FindControl("QuantityLabel"); int currentQuantity = Int32.Parse(quantityLabel.Text); currentQuantity = Math.Max(0, currentQuantity + delta); quantityLabel.Text = currentQuantity.ToString(System.Globalization.CultureInfo.InvariantCulture); } private void OnDecreaseQuantity(object sender, EventArgs e) { ChangeQuantity(sender, -1); } private void OnIncreaseQuantity(object sender, EventArgs e) { ChangeQuantity(sender, 1); } protected void Button1_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); sb.Append("Beverage order:<br/>"); foreach (GridViewRow row in GridView1.Rows) { if (row.RowType == DataControlRowType.DataRow) { Label quantityLabel = (Label)row.FindControl("QuantityLabel"); int currentQuantity = Int32.Parse(quantityLabel.Text); sb.Append(row.Cells[0].Text + " : " + currentQuantity + "<br/>"); } } SummaryLabel.Text = sb.ToString(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>UpdatePanel Inside GridView Template Example </title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:GridView ID="GridView1" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" runat="server"> <Columns> <asp:BoundField DataField="ProductName" HeaderText="ProductName" /> <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" /> <asp:TemplateField HeaderText="Quantity"> <ItemTemplate> <asp:UpdatePanel ID="QuantityUpdatePanel" UpdateMode="Conditional" runat="server" > <ContentTemplate> <asp:Label ID="QuantityLabel" Text="0" runat="server" /> <asp:Button ID="DecreaseQuantity" Text="-" OnClick="OnDecreaseQuantity" runat="server" /> <asp:Button ID="IncreaseQuantity" Text="+" OnClick="OnIncreaseQuantity" runat="server" /> </ContentTemplate> </asp:UpdatePanel> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:UpdatePanel ID="SummaryUpdatePanel" UpdateMode="Conditional" runat="server"> <ContentTemplate> <asp:Button ID="Button1" OnClick="Button1_Click" Text="Get Summary" runat="server" /> <br /> <asp:Label ID="SummaryLabel" runat="server"> </asp:Label> </ContentTemplate> </asp:UpdatePanel> <asp:SqlDataSource ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [ProductName], [UnitPrice] FROM [Alphabetical list of products] WHERE ([CategoryName] LIKE '%' + @CategoryName + '%')" runat="server"> <SelectParameters> <asp:Parameter DefaultValue="Beverages" Name="CategoryName" Type="String" /> </SelectParameters> </asp:SqlDataSource> </div> </form> </body> </html>
Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.