Bagikan melalui


ScriptManager.RegisterDataItem Metode

Definisi

Mengirim data kustom ke kontrol selama penyajian halaman parsial.

Overload

RegisterDataItem(Control, String)

Mengirim data kustom ke kontrol selama penyajian halaman parsial.

RegisterDataItem(Control, String, Boolean)

Mengirim data kustom ke kontrol selama penyajian halaman parsial, dan menunjukkan apakah data dalam format JavaScript Object Notation (JSON).

RegisterDataItem(Control, String)

Mengirim data kustom ke kontrol selama penyajian halaman parsial.

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

Kontrol yang menerima data.

dataItem
String

Data yang dikirim ke kontrol.

Pengecualian

controladalah null.

dataItem sudah terdaftar untuk control.

Contoh

Contoh berikut menunjukkan cara mengirim data ke dua Label kontrol pada halaman selama postback asinkron. Label Kontrol tidak berada di dalam UpdatePanel kontrol.

Catatan

Data yang dikirim dalam contoh ini hanya untuk ilustrasi. Dalam aplikasi dunia nyata, Anda akan menggunakan RegisterDataItem metode untuk mengirim data kustom dari server.

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

Keterangan

RegisterDataItem Gunakan metode untuk mengirim data dari server ke klien selama postback asinkron, terlepas dari apakah kontrol yang menerima data berada di dalam UpdatePanel kontrol.

Metode RegisterDataItem ini hanya dapat dipanggil selama postback asinkron. Untuk menentukan apakah postback asinkron, gunakan IsInAsyncPostBack properti . Metode ini memanggil kelebihan beban yang mengambil parameter bernama isJsonSerialized yang diatur ke false. isJsonSerialized Ketika parameter diatur ke false, string tidak diserialisasikan sebagai JavaScript Object Notation (JSON). Untuk informasi selengkapnya tentang format JSON, lihat Memperkenalkan situs Web JSON .

Item data yang terdaftar dengan RegisterDataItem metode dapat diakses dalam skrip klien selama pageLoadingperistiwa PageRequestManager , pageLoaded, dan endRequest objek . Saat Anda menangani peristiwa ini, data kustom diteruskan dalam objek argumen peristiwa. Misalnya, jika Anda menyediakan handler untuk peristiwa tersebut pageLoading , data kustom diteruskan di PageLoadingEventArgs kelas , yang mengekspos dataItems properti .

Lihat juga

Berlaku untuk

RegisterDataItem(Control, String, Boolean)

Mengirim data kustom ke kontrol selama penyajian halaman parsial, dan menunjukkan apakah data dalam format 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)

Parameter

control
Control

Kontrol halaman yang menerima data.

dataItem
String

Data yang dikirim ke kontrol.

isJsonSerialized
Boolean

true untuk menunjukkan bahwa dataItem diserialisasikan sebagai JSON; jika tidak, false.

Pengecualian

controladalah null.

dataItem sudah terdaftar untuk control.

Contoh

Contoh berikut menunjukkan cara mengirim data ke dua Label kontrol pada halaman selama postback asinkron. Label Kontrol tidak berada di dalam UpdatePanel kontrol. Contoh ini menunjukkan kelebihan beban yang tidak mengambil isJsonSerialized parameter . Jika tidak, prosedur untuk mengambil dataItems properti PageLoadingEventArgs objek sama seperti jika Anda tidak menggunakan kelebihan beban tersebut.

Catatan

Data yang dikirim dalam contoh ini hanya untuk ilustrasi. Dalam aplikasi dunia nyata, Anda akan menggunakan RegisterDataItem metode untuk mengirim data kustom dari server. Misalnya, Anda dapat menggunakan item data untuk mengirim informasi tentang apakah akan menyembunyikan atau menampilkan elemen klien yang tidak berada di dalam UpdatePanel kontrol.

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

Keterangan

Anda menggunakan RegisterDataItem metode untuk mengirim data dari server ke klien selama postback asinkron, terlepas dari apakah kontrol yang menerima data berada di dalam UpdatePanel kontrol.

dataItem Jika parameter yang Anda daftarkan control tidak diserialisasikan sebagai JSON, atur isJsonSerialized parameter ke false. Ini menghindari kebutuhan untuk menggunakan eval fungsi untuk setiap string yang dikirim ke klien. Untuk informasi selengkapnya tentang format JSON, lihat Memperkenalkan situs Web JSON .

Metode RegisterDataItem ini hanya dapat dipanggil selama postback asinkron. Untuk menentukan apakah postback asinkron, gunakan IsInAsyncPostBack properti .

Item data yang terdaftar dengan menggunakan RegisterDataItem metode dapat diakses dalam skrip klien selama pageLoadingperistiwa PageRequestManager , pageLoaded, dan endRequest objek . Saat Anda menangani peristiwa ini, data kustom diteruskan dalam objek argumen peristiwa. Misalnya, jika Anda menyediakan handler untuk peristiwa tersebut pageLoading , data kustom diteruskan di PageLoadingEventArgs kelas , yang mengekspos dataItems properti .

Lihat juga

Berlaku untuk