Udostępnij za pośrednictwem


ScriptManager.RegisterDataItem Metoda

Definicja

Wysyła dane niestandardowe do kontrolek podczas renderowania częściowego strony.

Przeciążenia

RegisterDataItem(Control, String)

Wysyła dane niestandardowe do kontrolki podczas renderowania częściowego strony.

RegisterDataItem(Control, String, Boolean)

Wysyła dane niestandardowe do kontrolki podczas renderowania częściowego i wskazuje, czy dane są w formacie JavaScript Object Notation (JSON).

RegisterDataItem(Control, String)

Wysyła dane niestandardowe do kontrolki podczas renderowania częściowego strony.

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

Kontrolka, która odbiera dane.

dataItem
String

Dane wysyłane do kontrolki.

Wyjątki

control to null.

Metoda jest wywoływana RegisterDataItem(Control, String, Boolean) podczas ogłaszania zwrotnego.

dataItem program jest już zarejestrowany dla programu control.

Przykłady

W poniższym przykładzie pokazano, jak wysyłać dane do dwóch Label kontrolek na stronie podczas asynchronicznego ogłaszania zwrotnego. Kontrolki Label nie znajdują się w kontrolce UpdatePanel .

Uwaga

Dane wysyłane w tym przykładzie są przeznaczone tylko dla ilustracji. W rzeczywistej aplikacji należy użyć RegisterDataItem metody do wysyłania danych niestandardowych z serwera.

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

Uwagi

RegisterDataItem Użyj metody , aby wysyłać dane z serwera do klienta podczas asynchronicznych ogłaszania zwrotnego, niezależnie od tego, czy kontrolka odbierającego dane znajduje się wewnątrz kontrolkiUpdatePanel.

Metodę RegisterDataItem można wywołać tylko podczas asynchronicznego ogłaszania zwrotnego. Aby określić, czy ogłaszanie zwrotne jest asynchroniczne, użyj IsInAsyncPostBack właściwości . Ta metoda wywołuje przeciążenie, które przyjmuje parametr o nazwie isJsonSerialized , który jest ustawiony na false. isJsonSerialized Gdy parametr jest ustawiony na falsewartość , ciąg nie jest serializowany jako JavaScript Object Notation (JSON). Aby uzyskać więcej informacji na temat formatu JSON, zobacz wprowadzenie do witryny sieci Web JSON .

Elementy danych, które są zarejestrowane za RegisterDataItem pomocą metody, można uzyskać dostęp do skryptu klienta podczas pageLoadingzdarzeń PageRequestManager obiektu , pageLoadedi endRequest . W przypadku obsługi tych zdarzeń dane niestandardowe są przekazywane w obiekcie argumentu zdarzenia. Jeśli na przykład podasz procedurę obsługi dla pageLoading zdarzenia, dane niestandardowe zostaną przekazane w PageLoadingEventArgs klasie, która uwidacznia dataItems właściwość .

Zobacz też

Dotyczy

RegisterDataItem(Control, String, Boolean)

Wysyła dane niestandardowe do kontrolki podczas renderowania częściowego i wskazuje, czy dane są w formacie JavaScript Object Notation (JSON).

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

Kontrolka strony, która odbiera dane.

dataItem
String

Dane wysyłane do kontrolki.

isJsonSerialized
Boolean

true , aby wskazać, że dataItem jest serializowany jako JSON; w przeciwnym razie false.

Wyjątki

control to null.

Metoda jest wywoływana RegisterDataItem(Control, String, Boolean) podczas ogłaszania zwrotnego.

dataItem program jest już zarejestrowany dla programu control.

Przykłady

W poniższym przykładzie pokazano, jak wysyłać dane do dwóch Label kontrolek na stronie podczas asynchronicznego ogłaszania zwrotnego. Kontrolki Label nie znajdują się w kontrolce UpdatePanel . W tym przykładzie pokazano przeciążenie, które nie bierze parametru isJsonSerialized . W przeciwnym razie procedura pobierania dataItems właściwości PageLoadingEventArgs obiektu jest taka sama jak w przypadku, gdy nie użyto tego przeciążenia.

Uwaga

Dane wysyłane w tym przykładzie są przeznaczone tylko dla ilustracji. W rzeczywistej aplikacji należy użyć RegisterDataItem metody do wysyłania danych niestandardowych z serwera. Można na przykład użyć elementu danych do wysyłania informacji o tym, czy ukryć lub pokazać elementy klienta, które nie znajdują się w kontrolce UpdatePanel .

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

Uwagi

Metoda służy RegisterDataItem do wysyłania danych z serwera do klienta podczas asynchronicznych ogłaszania zwrotnego, niezależnie od tego, czy formant odbierający dane znajduje się wewnątrz kontrolki UpdatePanel .

dataItem Jeśli parametr zarejestrowany dla control parametru nie jest serializowany jako JSON, ustaw isJsonSerialized parametr na falsewartość . Pozwala to uniknąć konieczności używania eval funkcji dla każdego ciągu wysyłanego do klienta. Aby uzyskać więcej informacji na temat formatu JSON, zobacz wprowadzenie do witryny sieci Web JSON .

Metodę RegisterDataItem można wywołać tylko podczas asynchronicznego ogłaszania zwrotnego. Aby określić, czy ogłaszanie zwrotne jest asynchroniczne, użyj IsInAsyncPostBack właściwości .

Elementy danych, które są zarejestrowane przy użyciu RegisterDataItem metody , mogą być dostępne w skry skryptie klienta podczas pageLoading, pageLoadedi endRequest zdarzeń PageRequestManager obiektu. W przypadku obsługi tych zdarzeń dane niestandardowe są przekazywane w obiekcie argumentu zdarzenia. Jeśli na przykład podasz procedurę obsługi dla pageLoading zdarzenia, dane niestandardowe zostaną przekazane w PageLoadingEventArgs klasie, która uwidacznia dataItems właściwość .

Zobacz też

Dotyczy