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
Este tema aún no ha recibido ninguna valoración - Valorar este tema

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).

Espacio de nombres:  System.Web.UI
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 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>


.NET Framework

Compatible con: 4, 3.5

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.
¿Le ha resultado útil?
(Caracteres restantes: 1500)
Contenido de la comunidad Agregar