Partager via


ScriptManager.RegisterDataItem Méthode

Définition

Envoie des données personnalisées aux contrôles pendant le rendu de page partiel.

Surcharges

RegisterDataItem(Control, String)

Envoie des données personnalisées à un contrôle pendant le rendu de page partiel.

RegisterDataItem(Control, String, Boolean)

Envoie des données personnalisées à un contrôle pendant le rendu de page partiel et indique si les données sont au format JSON (JavaScript Object Notation).

RegisterDataItem(Control, String)

Envoie des données personnalisées à un contrôle pendant le rendu de page partiel.

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)

Paramètres

control
Control

Contrôle qui reçoit les données.

dataItem
String

Données envoyées au contrôle.

Exceptions

control a la valeur null.

La méthode RegisterDataItem(Control, String, Boolean) est appelée lors d'une publication (postback).

dataItem est déjà inscrit pour control.

Exemples

L’exemple suivant montre comment envoyer des données à deux Label contrôles sur une page pendant une publication asynchrone. Les Label contrôles ne sont pas à l’intérieur d’un UpdatePanel contrôle.

Notes

Les données envoyées dans cet exemple sont uniquement illustrées. Dans une application réelle, vous devez utiliser la RegisterDataItem méthode pour envoyer des données personnalisées à partir du serveur.

<%@ 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>

Remarques

Utilisez la RegisterDataItem méthode pour envoyer des données du serveur au client pendant les postbacks asynchrones, que le contrôle recevant les données soit à l’intérieur d’un UpdatePanel contrôle.

La RegisterDataItem méthode peut être appelée uniquement pendant une publication asynchrone. Pour déterminer si une publication différée est asynchrone, utilisez la IsInAsyncPostBack propriété. Cette méthode appelle la surcharge qui accepte un paramètre nommé isJsonSerialized falsedéfini sur . Lorsque le isJsonSerialized paramètre est défini falsesur , la chaîne n’est pas sérialisée en tant que JSON (JavaScript Object Notation). Pour plus d’informations sur le format JSON, consultez le site web Introducing JSON .

Les éléments de données inscrits auprès de la méthode sont accessibles dans le RegisterDataItem script client pendant le pageLoading, pageLoadedet endRequest les événements de l’objet PageRequestManager . Lorsque vous gérez ces événements, les données personnalisées sont transmises dans un objet d’argument d’événement. Par exemple, si vous fournissez un gestionnaire pour l’événement pageLoading , les données personnalisées sont passées dans la PageLoadingEventArgs classe, ce qui expose une dataItems propriété.

Voir aussi

S’applique à

RegisterDataItem(Control, String, Boolean)

Envoie des données personnalisées à un contrôle pendant le rendu de page partiel et indique si les données sont au format 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)

Paramètres

control
Control

Contrôle de page qui reçoit les données.

dataItem
String

Données envoyées au contrôle.

isJsonSerialized
Boolean

true pour indiquer que dataItem est sérialisé au format JSON ; sinon, false.

Exceptions

control a la valeur null.

La méthode RegisterDataItem(Control, String, Boolean) est appelée lors d'une publication (postback).

dataItem est déjà inscrit pour control.

Exemples

L’exemple suivant montre comment envoyer des données à deux Label contrôles sur une page pendant une publication asynchrone. Les Label contrôles ne sont pas à l’intérieur d’un UpdatePanel contrôle. Cet exemple montre la surcharge qui ne prend pas le isJsonSerialized paramètre. Sinon, la procédure de récupération de la dataItems propriété de l’objet PageLoadingEventArgs est la même que si vous n’avez pas utilisé cette surcharge.

Notes

Les données envoyées dans cet exemple sont uniquement illustrées. Dans une application réelle, vous devez utiliser la RegisterDataItem méthode pour envoyer des données personnalisées à partir du serveur. Par exemple, vous pouvez utiliser l’élément de données pour envoyer des informations indiquant s’il faut masquer ou afficher les éléments clients qui ne sont pas à l’intérieur d’un UpdatePanel contrôle.

<%@ 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>

Remarques

Vous utilisez la RegisterDataItem méthode pour envoyer des données du serveur au client pendant les postbacks asynchrones, que le contrôle recevant les données soit à l’intérieur d’un UpdatePanel contrôle.

Si le dataItem paramètre que vous inscrivez n’est control pas sérialisé au format JSON, définissez le paramètre falsesur isJsonSerialized . Cela évite la nécessité d’utiliser la eval fonction pour chaque chaîne envoyée au client. Pour plus d’informations sur le format JSON, consultez le site web Introducing JSON .

La RegisterDataItem méthode peut être appelée uniquement pendant une publication asynchrone. Pour déterminer si une publication différée est asynchrone, utilisez la IsInAsyncPostBack propriété.

Les éléments de données inscrits à l’aide de la méthode sont accessibles dans le RegisterDataItem script client pendant le pageLoading, pageLoadedet endRequest les événements de l’objet PageRequestManager . Lorsque vous gérez ces événements, les données personnalisées sont transmises dans un objet d’argument d’événement. Par exemple, si vous fournissez un gestionnaire pour l’événement pageLoading , les données personnalisées sont passées dans la PageLoadingEventArgs classe, ce qui expose une dataItems propriété.

Voir aussi

S’applique à