Teilen über


ScriptManager.RegisterDataItem Methode

Definition

Sendet während des Teilrenderings von Seiten benutzerdefinierte Daten an Steuerelemente.

Überlädt

RegisterDataItem(Control, String)

Sendet während des Teilrenderings von Seiten benutzerdefinierte Daten an ein Steuerelement.

RegisterDataItem(Control, String, Boolean)

Sendet benutzerdefinierte Daten während des Teilrenderings von Seiten an ein Steuerelement und gibt an, ob die Daten das JSON-Format (JavaScript Object Notation) aufweisen.

RegisterDataItem(Control, String)

Sendet während des Teilrenderings von Seiten benutzerdefinierte Daten 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 für control registriert.

Beispiele

Das folgende Beispiel zeigt, wie Während eines asynchronen Postbacks Daten an zwei Label Steuerelemente auf einer Seite gesendet werden. Die Label Steuerelemente befinden sich nicht in einem UpdatePanel Steuerelement.

Hinweis

Die in diesem Beispiel gesendeten Daten dienen nur der 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 zum Senden von Daten vom Server an den Client während asynchroner Postbacks, unabhängig davon, ob sich das Steuerelement, das die Daten empfängt, in einem UpdatePanel Steuerelement befindet.

Die RegisterDataItem Methode kann nur während eines asynchronen Postbacks aufgerufen werden. Verwenden Sie die IsInAsyncPostBack -Eigenschaft, um zu bestimmen, ob ein Postback asynchron ist. Diese Methode ruft die Überladung auf, die einen Parameter mit dem Namen akzeptiert isJsonSerialized , der auf falsefestgelegt ist. Wenn der isJsonSerialized Parameter auf falsefestgelegt ist, wird die Zeichenfolge nicht als JavaScript Object Notation (JSON) serialisiert. Weitere Informationen zum JSON-Format finden Sie auf der Website Einführung in JSON .

Auf die Datenelemente, die bei der RegisterDataItem -Methode registriert sind, kann im Clientskript während des pageLoading- pageLoadedund endRequest -Ereignisses des PageRequestManager -Objekts zugegriffen 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, wodurch eine dataItems Eigenschaft verfügbar gemacht wird.

Weitere Informationen

Gilt für:

RegisterDataItem(Control, String, Boolean)

Sendet benutzerdefinierte Daten während des Teilrenderings von Seiten an ein Steuerelement und gibt an, ob die Daten das JSON-Format (JavaScript Object Notation) aufweisen.

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 dataItem als JSON serialisiert wird, andernfalls false.

Ausnahmen

control ist null.

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

dataItem ist bereits für control registriert.

Beispiele

Das folgende Beispiel zeigt, wie Während eines asynchronen Postbacks Daten an zwei Label Steuerelemente auf einer Seite gesendet werden. Die Label Steuerelemente befinden sich nicht in einem UpdatePanel Steuerelement. Dieses Beispiel zeigt die Überladung, die den isJsonSerialized Parameter nicht akzeptiert. Andernfalls ist die Prozedur zum Abrufen der dataItems -Eigenschaft des PageLoadingEventArgs -Objekts identisch, als hätten Sie diese Überladung nicht verwendet.

Hinweis

Die in diesem Beispiel gesendeten Daten dienen nur der Veranschaulichung. In einer realen Anwendung würden Sie die RegisterDataItem -Methode verwenden, um benutzerdefinierte Daten vom Server zu senden. Beispielsweise können Sie das Datenelement verwenden, um Informationen darüber zu senden, ob Clientelemente ausgeblendet oder angezeigt werden sollen, die sich nicht in einem UpdatePanel Steuerelement 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 zum Senden von Daten vom Server an den Client während asynchroner Postbacks, unabhängig davon, ob sich das Steuerelement, das die Daten empfängt, 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 festfalse.control Dadurch wird vermieden, dass die eval Funktion für jede Zeichenfolge verwendet werden muss, die an den Client gesendet wird. Weitere Informationen zum JSON-Format finden Sie auf der Website Einführung in JSON .

Die RegisterDataItem Methode kann nur während eines asynchronen Postbacks aufgerufen werden. Verwenden Sie die IsInAsyncPostBack -Eigenschaft, um zu bestimmen, ob ein Postback asynchron ist.

Auf die Datenelemente, die mithilfe der RegisterDataItem -Methode registriert werden, kann im Clientskript während der pageLoadingEreignisse , pageLoadedund endRequest des PageRequestManager -Objekts zugegriffen 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, wodurch eine dataItems Eigenschaft verfügbar gemacht wird.

Weitere Informationen

Gilt für: