ScriptManager.RegisterDataItem Metod

Definition

Skickar anpassade data till kontroller under partiell återgivning av sidor.

Överlagringar

Name Description
RegisterDataItem(Control, String)

Skickar anpassade data till en kontroll under partiell återgivning av sidor.

RegisterDataItem(Control, String, Boolean)

Skickar anpassade data till en kontroll under partiell sidåtergivning och anger om data är i JSON-format (JavaScript Object Notation).

RegisterDataItem(Control, String)

Skickar anpassade data till en kontroll under partiell återgivning av sidor.

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)

Parametrar

control
Control

Kontrollen som tar emot data.

dataItem
String

De data som skickas till kontrollen.

Undantag

control är null.

dataItem är redan registrerat för control.

Exempel

I följande exempel visas hur du skickar data till två Label kontroller på en sida under en asynkron postback. Kontrollerna Label finns inte i en UpdatePanel kontroll.

Note

De data som skickas i det här exemplet är endast för illustration. I ett verkligt program använder RegisterDataItem du metoden för att skicka anpassade data från servern.

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

Kommentarer

RegisterDataItem Använd metoden för att skicka data från servern till klienten under asynkrona postbacks, oavsett om kontrollen som tar emot data finns i en UpdatePanel kontroll.

Metoden RegisterDataItem kan bara anropas under en asynkron postback. Använd egenskapen för att avgöra om en postback är asynkron IsInAsyncPostBack . Den här metoden anropar överlagringen som tar en parameter med namnet isJsonSerialized som är inställd på false. När parametern isJsonSerialized är inställd falsepå serialiseras inte strängen som JavaScript Object Notation (JSON). Mer information om JSON-formatet finns på webbplatsen Introduktion till JSON .

De dataobjekt som är registrerade med RegisterDataItem metoden kan nås i klientskriptet under pageLoadingobjektets , pageLoadedoch endRequest -händelser PageRequestManager . När du hanterar dessa händelser skickas anpassade data i ett händelseargumentobjekt. Om du till exempel anger en hanterare för pageLoading händelsen skickas anpassade data i PageLoadingEventArgs klassen, vilket exponerar en dataItems egenskap.

Se även

Gäller för

RegisterDataItem(Control, String, Boolean)

Skickar anpassade data till en kontroll under partiell sidåtergivning och anger om data är i JSON-format (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)

Parametrar

control
Control

Sidkontrollen som tar emot data.

dataItem
String

De data som skickas till kontrollen.

isJsonSerialized
Boolean

trueför att ange att dataItem är serialiserad som JSON, annars . false

Undantag

control är null.

dataItem är redan registrerat för control.

Exempel

I följande exempel visas hur du skickar data till två Label kontroller på en sida under en asynkron postback. Kontrollerna Label finns inte i en UpdatePanel kontroll. Det här exemplet visar den överlagring som inte tar parametern isJsonSerialized . Annars är proceduren för att dataItems hämta objektets PageLoadingEventArgs egenskap densamma som om du inte använde överlagringen.

Note

De data som skickas i det här exemplet är endast för illustration. I ett verkligt program använder RegisterDataItem du metoden för att skicka anpassade data från servern. Du kan till exempel använda dataobjektet för att skicka information om huruvida du vill dölja eller visa klientelement som inte finns i en UpdatePanel kontroll.

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

Kommentarer

Du använder RegisterDataItem metoden för att skicka data från servern till klienten under asynkrona postbacks, oavsett om kontrollen som tar emot data finns i en UpdatePanel kontroll.

Om parametern dataItem som du registrerar dig för control inte serialiseras som JSON anger du parametern isJsonSerialized till false. På så sätt slipper du använda eval funktionen för varje sträng som skickas till klienten. Mer information om JSON-formatet finns på webbplatsen Introduktion till JSON .

Metoden RegisterDataItem kan bara anropas under en asynkron postback. Använd egenskapen för att avgöra om en postback är asynkron IsInAsyncPostBack .

De dataobjekt som registreras med hjälp RegisterDataItem av metoden kan nås i klientskriptet under pageLoadingobjektets , pageLoadedoch endRequest -händelser PageRequestManager . När du hanterar dessa händelser skickas anpassade data i ett händelseargumentobjekt. Om du till exempel anger en hanterare för pageLoading händelsen skickas anpassade data i PageLoadingEventArgs klassen, vilket exponerar en dataItems egenskap.

Se även

Gäller för