ScriptManager.RegisterDataItem Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.
Metode RegisterDataItem(Control, String, Boolean) ini dipanggil selama postback.
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.
Metode RegisterDataItem(Control, String, Boolean) ini dipanggil selama postback.
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 .