ScriptManager.RegisterDataItem Método

Definição

Envia dados personalizados para controles durante a renderização parcial da página.

Sobrecargas

RegisterDataItem(Control, String)

Envia dados personalizados a um controle durante a renderização de página parcial.

RegisterDataItem(Control, String, Boolean)

Envia dados personalizados a um controle durante a renderização parcial da página e indica se os dados estão no formato JSON (JavaScript Object Notation).

RegisterDataItem(Control, String)

Envia dados personalizados a um controle durante a renderização de página parcial.

public:
 void RegisterDataItem(System::Web::UI::Control ^ control, System::String ^ dataItem);
public void RegisterDataItem (System.Web.UI.Control control, string dataItem);
member this.RegisterDataItem : System.Web.UI.Control * string -> unit
Public Sub RegisterDataItem (control As Control, dataItem As String)

Parâmetros

control
Control

O controle que está recebendo os dados.

dataItem
String

Os dados enviados ao controle.

Exceções

control é null.

O método RegisterDataItem(Control, String, Boolean) é chamado durante um postback.

O dataItem já está registrado para control.

Exemplos

O exemplo a seguir mostra como enviar dados para dois Label controles em uma página durante um postback assíncrono. Os Label controles não estão dentro de um UpdatePanel controle .

Observação

Os dados enviados neste exemplo são apenas para ilustração. Em um aplicativo do mundo real, você usaria o RegisterDataItem método para enviar dados personalizados do servidor.

<%@ 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>
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        If (ScriptManager1.IsInAsyncPostBack) Then
            Dim json As New System.Web.Script.Serialization.JavaScriptSerializer
            ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString())
            ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), True)
        End If
    End Sub
</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>

Comentários

Use o RegisterDataItem método para enviar dados do servidor para o cliente durante postbacks assíncronos, independentemente de o controle que recebe os dados estiver dentro de um UpdatePanel controle.

O RegisterDataItem método só pode ser chamado durante um postback assíncrono. Para determinar se um postback é assíncrono, use a IsInAsyncPostBack propriedade . Esse método invoca a sobrecarga que usa um parâmetro chamado isJsonSerialized definido falsecomo . Quando o isJsonSerialized parâmetro é definido falsecomo , a cadeia de caracteres não é serializada como JSON (JavaScript Object Notation). Para obter mais informações sobre o formato JSON, consulte o site Apresentando JSON .

Os itens de dados registrados com o RegisterDataItem método podem ser acessados no script do cliente durante os pageLoadingeventos , pageLoadede endRequest do PageRequestManager objeto . Quando você manipula esses eventos, os dados personalizados são passados em um objeto de argumento de evento. Por exemplo, se você fornecer um manipulador para o pageLoading evento, os dados personalizados serão passados na classe , que PageLoadingEventArgs expõe uma dataItems propriedade .

Confira também

Aplica-se a

RegisterDataItem(Control, String, Boolean)

Envia dados personalizados a um controle durante a renderização parcial da página e indica se os dados estão no formato JSON (JavaScript Object Notation).

public:
 void RegisterDataItem(System::Web::UI::Control ^ control, System::String ^ dataItem, bool isJsonSerialized);
public void RegisterDataItem (System.Web.UI.Control control, string dataItem, bool isJsonSerialized);
member this.RegisterDataItem : System.Web.UI.Control * string * bool -> unit
Public Sub RegisterDataItem (control As Control, dataItem As String, isJsonSerialized As Boolean)

Parâmetros

control
Control

O controle de página que está recebendo os dados.

dataItem
String

Os dados enviados ao controle.

isJsonSerialized
Boolean

true para indicar que dataItem é serializado como JSON; caso contrário, false.

Exceções

control é null.

O método RegisterDataItem(Control, String, Boolean) é chamado durante um postback.

O dataItem já está registrado para control.

Exemplos

O exemplo a seguir mostra como enviar dados para dois Label controles em uma página durante um postback assíncrono. Os Label controles não estão dentro de um UpdatePanel controle . Este exemplo mostra a sobrecarga que não usa o isJsonSerialized parâmetro . Caso contrário, o procedimento para recuperar a dataItems propriedade do PageLoadingEventArgs objeto será o mesmo que se você não tivesse usado essa sobrecarga.

Observação

Os dados enviados neste exemplo são apenas para ilustração. Em um aplicativo do mundo real, você usaria o RegisterDataItem método para enviar dados personalizados do servidor. Por exemplo, você pode usar o item de dados para enviar informações sobre se deseja ocultar ou mostrar elementos do cliente que não estão dentro de um UpdatePanel controle.

<%@ 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>
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        If (ScriptManager1.IsInAsyncPostBack) Then
            Dim json As New System.Web.Script.Serialization.JavaScriptSerializer
            ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString())
            ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), True)
        End If
    End Sub
</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>

Comentários

Você usa o RegisterDataItem método para enviar dados do servidor para o cliente durante postbacks assíncronos, independentemente de o controle que recebe os dados estiver dentro de um UpdatePanel controle.

Se o parâmetro para o dataItem qual você se registra control não for serializado como JSON, defina o isJsonSerialized parâmetro como false. Isso evita a necessidade de usar a eval função para cada cadeia de caracteres enviada ao cliente. Para obter mais informações sobre o formato JSON, consulte o site Apresentando JSON .

O RegisterDataItem método só pode ser chamado durante um postback assíncrono. Para determinar se um postback é assíncrono, use a IsInAsyncPostBack propriedade .

Os itens de dados registrados usando o RegisterDataItem método podem ser acessados no script do cliente durante os pageLoadingeventos , pageLoadede endRequest do PageRequestManager objeto . Quando você manipula esses eventos, os dados personalizados são passados em um objeto de argumento de evento. Por exemplo, se você fornecer um manipulador para o pageLoading evento, os dados personalizados serão passados na classe , que PageLoadingEventArgs expõe uma dataItems propriedade .

Confira também

Aplica-se a