Sdílet prostřednictvím


ScriptManager.RegisterDataItem Metoda

Definice

Odesílá vlastní data ovládacím prvkům během částečného vykreslování stránky.

Přetížení

Name Description
RegisterDataItem(Control, String)

Odesílá vlastní data do ovládacího prvku během částečného vykreslování stránky.

RegisterDataItem(Control, String, Boolean)

Odesílá vlastní data do ovládacího prvku během částečného vykreslování stránky a označuje, jestli jsou data ve formátu JSON (JavaScript Object Notation).

RegisterDataItem(Control, String)

Odesílá vlastní data do ovládacího prvku během částečného vykreslování stránky.

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)

Parametry

control
Control

Ovládací prvek, který přijímá data.

dataItem
String

Data odesílaná do ovládacího prvku.

Výjimky

control je null.

dataItem je již registrován pro control.

Příklady

Následující příklad ukazuje, jak odeslat data do dvou Label ovládacích prvků na stránce během asynchronního postbacku. Ovládací Label prvky nejsou uvnitř UpdatePanel ovládacího prvku.

Poznámka:

Data odeslaná v tomto příkladu jsou určená pouze pro ilustraci. V reálné aplikaci byste použili metodu RegisterDataItem k odesílání vlastních dat ze serveru.

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

Poznámky

RegisterDataItem Metoda slouží k odesílání dat ze serveru klientovi během asynchronních postbacků bez ohledu na to, zda ovládací prvek přijímající data je uvnitř UpdatePanel ovládacího prvku.

Metodu RegisterDataItem lze volat pouze během asynchronního postbacku. Chcete-li zjistit, zda postback je asynchronní, použijte IsInAsyncPostBack vlastnost. Tato metoda vyvolá přetížení, který přebírá parametr s názvem isJsonSerialized , který je nastaven na false. isJsonSerialized Pokud je parametr nastaven na false, řetězec není serializován jako JavaScript Object Notation (JSON). Další informace o formátu JSON najdete na webu Představujeme JSON .

K datovým položkám registrovaným metodou RegisterDataItem lze přistupovat v klientském skriptu během pageLoading, pageLoadeda endRequest události objektu PageRequestManager . Při zpracování těchto událostí se vlastní data předávají v objektu argumentu události. Pokud například zadáte obslužnou rutinu pageLoading události, předají se vlastní data ve PageLoadingEventArgs třídě, která zveřejňuje dataItems vlastnost.

Viz také

Platí pro

RegisterDataItem(Control, String, Boolean)

Odesílá vlastní data do ovládacího prvku během částečného vykreslování stránky a označuje, jestli jsou data ve formátu 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)

Parametry

control
Control

Ovládací prvek stránky, který přijímá data.

dataItem
String

Data odesílaná do ovládacího prvku.

isJsonSerialized
Boolean

true k označení, že dataItem je serializován jako JSON, jinak , false.

Výjimky

control je null.

dataItem je již registrován pro control.

Příklady

Následující příklad ukazuje, jak odeslat data do dvou Label ovládacích prvků na stránce během asynchronního postbacku. Ovládací Label prvky nejsou uvnitř UpdatePanel ovládacího prvku. Tento příklad ukazuje přetížení, které nepřebírají isJsonSerialized parametr. Jinak je postup pro načtení dataItems vlastnosti objektu PageLoadingEventArgs stejný jako v případě, že jste toto přetížení nepoužili.

Poznámka:

Data odeslaná v tomto příkladu jsou určená pouze pro ilustraci. V reálné aplikaci byste použili metodu RegisterDataItem k odesílání vlastních dat ze serveru. Datovou položku můžete například použít k odeslání informací o tom, zda se mají skrýt nebo zobrazit prvky klienta, které nejsou uvnitř UpdatePanel ovládacího prvku.

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

Poznámky

Metodu RegisterDataItem použijete k odesílání dat ze serveru klientovi během asynchronních postbacků bez ohledu na to, zda ovládací prvek přijímající data je uvnitř UpdatePanel ovládacího prvku.

dataItem Pokud parametr, který control zaregistrujete, není serializován jako JSON, nastavte isJsonSerialized parametr na false. Tím se vyhnete nutnosti používat eval funkci pro každý řetězec odesílaný klientovi. Další informace o formátu JSON najdete na webu Představujeme JSON .

Metodu RegisterDataItem lze volat pouze během asynchronního postbacku. Chcete-li zjistit, zda postback je asynchronní, použijte IsInAsyncPostBack vlastnost.

Datové položky, které jsou registrovány pomocí RegisterDataItem metody lze přistupovat v klientském skriptu během pageLoading, pageLoadeda endRequest události objektu PageRequestManager . Při zpracování těchto událostí se vlastní data předávají v objektu argumentu události. Pokud například zadáte obslužnou rutinu pageLoading události, předají se vlastní data ve PageLoadingEventArgs třídě, která zveřejňuje dataItems vlastnost.

Viz také

Platí pro