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
control
adalah 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 pageLoading
peristiwa 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
control
adalah 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 pageLoading
peristiwa 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 .