ScriptManager.RegisterDataItem Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
false
défini sur . Lorsque le isJsonSerialized
paramètre est défini false
sur , 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
, pageLoaded
et 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 false
sur 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
, pageLoaded
et 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é.