Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. |
Traducción
Original
|
ScriptManager.RegisterDataItem (Método) (Control, String, Boolean)
Envía datos personalizados a un control durante la representación parcial de la página e indica si los datos están en formato JavaScript Object Notation (JSON).
Ensamblado: System.Web.Extensions (en System.Web.Extensions.dll)
public void RegisterDataItem( Control control, string dataItem, bool isJsonSerialized )
Parámetros
- control
- Tipo: System.Web.UI.Control
Control de página que recibe los datos.
- dataItem
- Tipo: System.String
Datos que se envían al control.
- isJsonSerialized
- Tipo: System.Boolean
Es true para indicar que dataItem se serializa como JSON; en caso contrario es false.
| Excepción | Condición |
|---|---|
| ArgumentNullException |
El valor de control es null. |
| InvalidOperationException |
Durante una devolución de datos, se llama al método RegisterDataItem. |
| ArgumentException |
dataItem ya se encuentra registrado para control. |
El método RegisterDataItem se usa para enviar datos del servidor al cliente durante las devoluciones de datos asincrónicas, sin tener en cuenta si el control que recibe los datos está dentro de un control UpdatePanel.
Si el parámetro dataItem que se registra para control no se serializa como JSON, establezca el parámetro isJsonSerialized en false. Esto evita la necesidad de utilizar la función eval para cada cadena que se envía al cliente. Para obtener más información sobre el formato JSON, visite el sitio web Introducing JSON.
Solo se puede llamar al método RegisterDataItem durante un postback asincrónico. Para determinar si una devolución de datos es asincrónica, utilice la propiedad IsInAsyncPostBack.
Se puede tener acceso a los elementos de datos que se registran con el método RegisterDataItem en el script de cliente durante los eventos pageLoading, pageLoaded y endRequest del objeto PageRequestManager. Al administrar estos eventos, los datos personalizados se pasan en un objeto de argumento de evento. Por ejemplo, si proporciona un controlador para el evento pageLoading, los datos personalizados se pasan en la clase PageLoadingEventArgs, que expone una propiedad dataItems.
El ejemplo siguiente muestra cómo enviar los datos a dos controles Label en una página durante una devolución de datos asincrónica. Los controles Label no están dentro de un control UpdatePanel. Este ejemplo muestra la sobrecarga que no usa el parámetro isJsonSerialized. De lo contrario, el procedimiento para recuperar la propiedad dataItems del objeto PageLoadingEventArgs es equivalente a no utilizar esa sobrecarga.
Nota
|
|---|
|
Los datos que se envían en este ejemplo sólo tienen fines ilustrativos. En una aplicación real, utilizaría el método RegisterDataItem para enviar datos personalizados desde el servidor. Por ejemplo, podría utilizar el elemento de datos para enviar información sobre si se deben ocultar o mostrar los elementos de cliente que no están dentro de un control UpdatePanel. |
<%@ 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 Page_Load(object sender, EventArgs e) { if (ScriptManager1.IsInAsyncPostBack) { System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer(); ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString()); ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), true); } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>ScriptManager RegisterDataItem Example</title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <script type="text/javascript" language="javascript"> Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler); function PageLoadingHandler(sender, args) { var dataItems = args.get_dataItems(); if ($get('Label1') !== null) $get('Label1').innerHTML = dataItems['Label1']; if ($get('Label2') !== null) $get('Label2').innerHTML = dataItems['Label2']; } </script> <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> <ContentTemplate> UpdatePanel content. <asp:Button ID="Button1" Text="Submit" runat="server" /> </ContentTemplate> </asp:UpdatePanel> <hr /> <asp:Label ID="Label1" runat="server" /> <br /> <asp:Label ID="Label2" runat="server" /> </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.
Nota