Freigeben über


ScriptManager.RegisterDataItem Methode

Definition

Sendet benutzerdefinierte Daten an Steuerelemente während des teilweisen Seitenrenderings.

Überlädt

Name Beschreibung
RegisterDataItem(Control, String)

Sendet benutzerdefinierte Daten während des teilweisen Seitenrenderings an ein Steuerelement.

RegisterDataItem(Control, String, Boolean)

Sendet benutzerdefinierte Daten während des teilweisen Seitenrenderings an ein Steuerelement und gibt an, ob die Daten im Json-Format (JavaScript Object Notation) vorliegen.

RegisterDataItem(Control, String)

Sendet benutzerdefinierte Daten während des teilweisen Seitenrenderings an ein Steuerelement.

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)

Parameter

control
Control

Das Steuerelement, das die Daten empfängt.

dataItem
String

Die Daten, die an das Steuerelement gesendet werden.

Ausnahmen

control ist null.

Die RegisterDataItem(Control, String, Boolean) Methode wird während eines Postbacks aufgerufen.

dataItem ist bereits registriert für control.

Beispiele

Das folgende Beispiel zeigt, wie Daten während eines asynchronen Postbacks an zwei Label Steuerelemente auf einer Seite gesendet werden. Die Label Steuerelemente befinden sich nicht innerhalb eines Steuerelements UpdatePanel .

Hinweis

Die in diesem Beispiel gesendeten Daten dienen nur zur Veranschaulichung. In einer realen Anwendung würden Sie die RegisterDataItem Methode verwenden, um benutzerdefinierte Daten vom Server zu senden.

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

Hinweise

Verwenden Sie die RegisterDataItem Methode, um Daten vom Server während asynchroner Postbacks an den Client zu senden, unabhängig davon, ob sich das Empfangen der Daten in einem UpdatePanel Steuerelement befindet.

Die RegisterDataItem Methode kann nur während eines asynchronen Postbacks aufgerufen werden. Um festzustellen, ob ein Postback asynchron ist, verwenden Sie die IsInAsyncPostBack Eigenschaft. Diese Methode ruft die Überladung auf, die einen Parameter mit dem Namen isJsonSerialized verwendet, der auf false. Wenn der isJsonSerialized Parameter auf false festgelegt ist, wird die Zeichenfolge nicht als JavaScript Object Notation (JSON) serialisiert. Weitere Informationen zum JSON-Format finden Sie auf der Einführungs-JSON-Website .

Auf die mit der RegisterDataItem Methode registrierten Datenelemente kann während des pageLoadingEreignisses pageLoadeddes Objekts im Clientskript zugegriffen endRequestPageRequestManager werden. Wenn Sie diese Ereignisse behandeln, werden die benutzerdefinierten Daten in einem Ereignisargumentobjekt übergeben. Wenn Sie beispielsweise einen Handler für das pageLoading Ereignis bereitstellen, werden die benutzerdefinierten Daten in der PageLoadingEventArgs Klasse übergeben, die eine dataItems Eigenschaft verfügbar macht.

Weitere Informationen

Gilt für:

RegisterDataItem(Control, String, Boolean)

Sendet benutzerdefinierte Daten während des teilweisen Seitenrenderings an ein Steuerelement und gibt an, ob die Daten im Json-Format (JavaScript Object Notation) vorliegen.

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)

Parameter

control
Control

Das Seitensteuerelement, das die Daten empfängt.

dataItem
String

Die Daten, die an das Steuerelement gesendet werden.

isJsonSerialized
Boolean

true um anzugeben, dass als dataItem JSON serialisiert wird; andernfalls false.

Ausnahmen

control ist null.

Die RegisterDataItem(Control, String, Boolean) Methode wird während eines Postbacks aufgerufen.

dataItem ist bereits registriert für control.

Beispiele

Das folgende Beispiel zeigt, wie Daten während eines asynchronen Postbacks an zwei Label Steuerelemente auf einer Seite gesendet werden. Die Label Steuerelemente befinden sich nicht innerhalb eines Steuerelements UpdatePanel . Dieses Beispiel zeigt die Überladung, die den isJsonSerialized Parameter nicht verwendet. Andernfalls entspricht die Prozedur zum Abrufen der dataItems Eigenschaft des PageLoadingEventArgs Objekts dem, wenn Sie diese Überladung nicht verwendet haben.

Hinweis

Die in diesem Beispiel gesendeten Daten dienen nur zur Veranschaulichung. In einer realen Anwendung würden Sie die RegisterDataItem Methode verwenden, um benutzerdefinierte Daten vom Server zu senden. Sie können z. B. das Datenelement verwenden, um Informationen darüber zu senden, ob Clientelemente ausgeblendet oder angezeigt werden sollen, die sich nicht innerhalb eines UpdatePanel Steuerelements befinden.

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

Hinweise

Sie verwenden die RegisterDataItem Methode, um Daten vom Server während asynchroner Postbacks an den Client zu senden, unabhängig davon, ob sich das Empfangen der Daten in einem UpdatePanel Steuerelement befindet.

Wenn der Parameter, für den dataItem Sie sich registrieren, nicht als JSON serialisiert wird, legen Sie den isJsonSerialized Parameter auf false.control Dies vermeidet die Notwendigkeit, die eval Funktion für jede Zeichenfolge zu verwenden, die an den Client gesendet wird. Weitere Informationen zum JSON-Format finden Sie auf der Einführungs-JSON-Website .

Die RegisterDataItem Methode kann nur während eines asynchronen Postbacks aufgerufen werden. Um festzustellen, ob ein Postback asynchron ist, verwenden Sie die IsInAsyncPostBack Eigenschaft.

Auf die Mithilfe der RegisterDataItem Methode registrierten Datenelemente kann während des pageLoadingEreignisses pageLoadeddes Objekts im Clientskript zugegriffen endRequestPageRequestManager werden. Wenn Sie diese Ereignisse behandeln, werden die benutzerdefinierten Daten in einem Ereignisargumentobjekt übergeben. Wenn Sie beispielsweise einen Handler für das pageLoading Ereignis bereitstellen, werden die benutzerdefinierten Daten in der PageLoadingEventArgs Klasse übergeben, die eine dataItems Eigenschaft verfügbar macht.

Weitere Informationen

Gilt für: